From 1f3e1ee76f1e572930fde4e8e8428134af2df334 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 16 Jul 2024 16:22:02 +0200 Subject: [PATCH] regen pidl all: rm epan/dissectors/pidl/*-stamp; pushd epan/dissectors/pidl/ && make ;popd --- epan/dissectors/packet-dcerpc-atsvc.c | 54 +- epan/dissectors/packet-dcerpc-browser.c | 205 +- epan/dissectors/packet-dcerpc-clusapi.c | 1197 +- epan/dissectors/packet-dcerpc-dfs.c | 500 +- epan/dissectors/packet-dcerpc-dnsserver.c | 282 +- epan/dissectors/packet-dcerpc-drsuapi.c | 20712 ++++++++++++------- epan/dissectors/packet-dcerpc-drsuapi.h | 51 +- epan/dissectors/packet-dcerpc-dssetup.c | 27 +- epan/dissectors/packet-dcerpc-efs.c | 101 +- epan/dissectors/packet-dcerpc-eventlog.c | 26 +- epan/dissectors/packet-dcerpc-frsrpc.c | 164 +- epan/dissectors/packet-dcerpc-frstrans.c | 102 +- epan/dissectors/packet-dcerpc-fsrvp.c | 67 +- epan/dissectors/packet-dcerpc-iwbemlevel1login.c | 89 +- epan/dissectors/packet-dcerpc-iwbemloginclientid.c | 8 +- .../packet-dcerpc-iwbemloginclientidex.c | 16 +- epan/dissectors/packet-dcerpc-iwbemservices.c | 72 +- epan/dissectors/packet-dcerpc-lsa.c | 291 +- epan/dissectors/packet-dcerpc-mapi.c | 1730 +- epan/dissectors/packet-dcerpc-mdssvc.c | 24 +- epan/dissectors/packet-dcerpc-nspi.c | 165 +- epan/dissectors/packet-dcerpc-rcg.c | 189 +- epan/dissectors/packet-dcerpc-rfr.c | 40 +- epan/dissectors/packet-dcerpc-samr.c | 207 +- epan/dissectors/packet-dcerpc-srvsvc.c | 1445 +- epan/dissectors/packet-dcerpc-svcctl.c | 610 +- epan/dissectors/packet-dcerpc-winreg.c | 94 +- epan/dissectors/packet-dcerpc-winspool.c | 914 +- epan/dissectors/packet-dcerpc-witness.c | 443 +- epan/dissectors/packet-dcerpc-wkssvc.c | 902 +- 30 files changed, 20874 insertions(+), 9853 deletions(-) diff --git a/epan/dissectors/packet-dcerpc-atsvc.c b/epan/dissectors/packet-dcerpc-atsvc.c index 7ef738b8ad..b12b09abbb 100644 --- a/epan/dissectors/packet-dcerpc-atsvc.c +++ b/epan/dissectors/packet-dcerpc-atsvc.c @@ -551,9 +551,13 @@ atsvc_dissect_element_JobInfo_command(tvbuff_t *tvb _U_, int offset _U_, packet_ static int atsvc_dissect_element_JobInfo_command_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_atsvc_JobInfo_command, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_atsvc_JobInfo_command, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -657,9 +661,13 @@ atsvc_dissect_element_JobEnumInfo_command(tvbuff_t *tvb _U_, int offset _U_, pac static int atsvc_dissect_element_JobEnumInfo_command_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_atsvc_JobEnumInfo_command, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_atsvc_JobEnumInfo_command, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -729,7 +737,11 @@ atsvc_dissect_element_enum_ctr_first_entry(tvbuff_t *tvb _U_, int offset _U_, pa static int atsvc_dissect_element_enum_ctr_first_entry_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, atsvc_dissect_element_enum_ctr_first_entry__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, atsvc_dissect_element_enum_ctr_first_entry__); return offset; } @@ -784,9 +796,13 @@ atsvc_dissect_element_JobAdd_servername(tvbuff_t *tvb _U_, int offset _U_, packe static int atsvc_dissect_element_JobAdd_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -869,9 +885,13 @@ atsvc_dissect_element_JobDel_servername(tvbuff_t *tvb _U_, int offset _U_, packe static int atsvc_dissect_element_JobDel_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -937,9 +957,13 @@ atsvc_dissect_element_JobEnum_servername(tvbuff_t *tvb _U_, int offset _U_, pack static int atsvc_dissect_element_JobEnum_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1058,9 +1082,13 @@ atsvc_dissect_element_JobGetInfo_servername(tvbuff_t *tvb _U_, int offset _U_, p static int atsvc_dissect_element_JobGetInfo_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_atsvc_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-browser.c b/epan/dissectors/packet-dcerpc-browser.c index ee3a611a92..b0f865a7b2 100644 --- a/epan/dissectors/packet-dcerpc-browser.c +++ b/epan/dissectors/packet-dcerpc-browser.c @@ -147,7 +147,7 @@ static int browser_dissect_element_BrowserrSrvInfoUnion_info100_(tvbuff_t *tvb _ static int browser_dissect_element_BrowserrSrvInfoUnion_info101(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int browser_dissect_element_BrowserrSrvInfoUnion_info101_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int browser_dissect_element_BrowserrSrvInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int browser_dissect_element_TYPE_1_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int browser_dissect_element_TYPE_2_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int browser_dissect_element_TYPE_2_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -287,7 +287,11 @@ browser_dissect_element_BrowserrSrvInfo100Ctr_entries(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfo100Ctr_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, browser_dissect_element_BrowserrSrvInfo100Ctr_entries__); return offset; } @@ -356,7 +360,11 @@ browser_dissect_element_BrowserrSrvInfo101Ctr_entries(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfo101Ctr_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, browser_dissect_element_BrowserrSrvInfo101Ctr_entries__); return offset; } @@ -452,8 +460,9 @@ browser_dissect_BrowserrSrvInfoUnion(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_browser_BrowserrSrvInfoUnion, &item, "BrowserrSrvInfoUnion"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 100: @@ -487,9 +496,9 @@ browser_dissect_element_BrowserrSrvInfo_level(tvbuff_t *tvb _U_, int offset _U_, } static int -browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = browser_dissect_BrowserrSrvInfoUnion(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo_info, *level); + offset = browser_dissect_BrowserrSrvInfoUnion(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo_info, level); return offset; } @@ -513,7 +522,7 @@ browser_dissect_struct_BrowserrSrvInfo(tvbuff_t *tvb _U_, int offset _U_, packet offset = browser_dissect_element_BrowserrSrvInfo_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = browser_dissect_element_BrowserrSrvInfo_info(tvb, offset, pinfo, tree, di, drep, &level); + offset = browser_dissect_element_BrowserrSrvInfo_info(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -1040,7 +1049,11 @@ browser_dissect_element_TYPE_4_unknown2(tvbuff_t *tvb _U_, int offset _U_, packe static int browser_dissect_element_TYPE_4_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_TYPE_4_unknown2__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, browser_dissect_element_TYPE_4_unknown2__); return offset; } @@ -1095,9 +1108,13 @@ browser_dissect_element_BrowserrServerEnum_unknown1(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrServerEnum_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1114,9 +1131,13 @@ browser_dissect_element_BrowserrServerEnum_unknown2(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrServerEnum_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown2, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1133,9 +1154,13 @@ browser_dissect_element_BrowserrServerEnum_unknown3(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrServerEnum_unknown3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown3, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown3, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1200,9 +1225,13 @@ browser_dissect_element_BrowserrServerEnum_unknown7(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrServerEnum_unknown7_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown7, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown7, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1293,9 +1322,13 @@ browser_dissect_element_BrowserrDebugCall_unknown1(tvbuff_t *tvb _U_, int offset static int browser_dissect_element_BrowserrDebugCall_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugCall_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugCall_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1361,9 +1394,13 @@ browser_dissect_element_BrowserrQueryOtherDomains_server_unc(tvbuff_t *tvb _U_, static int browser_dissect_element_BrowserrQueryOtherDomains_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryOtherDomains_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryOtherDomains_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1449,9 +1486,13 @@ browser_dissect_element_BrowserrResetNetlogonState_unknown(tvbuff_t *tvb _U_, in static int browser_dissect_element_BrowserrResetNetlogonState_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetNetlogonState_unknown, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetNetlogonState_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1495,9 +1536,13 @@ browser_dissect_element_BrowserrDebugTrace_unknown1(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrDebugTrace_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugTrace_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugTrace_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1514,9 +1559,13 @@ browser_dissect_element_BrowserrDebugTrace_unknown2(tvbuff_t *tvb _U_, int offse static int browser_dissect_element_BrowserrDebugTrace_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_browser_BrowserrDebugTrace_unknown2, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_browser_BrowserrDebugTrace_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1563,9 +1612,13 @@ browser_dissect_element_BrowserrQueryStatistics_unknown1(tvbuff_t *tvb _U_, int static int browser_dissect_element_BrowserrQueryStatistics_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryStatistics_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryStatistics_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1637,9 +1690,13 @@ browser_dissect_element_BrowserrResetStatistics_unknown(tvbuff_t *tvb _U_, int o static int browser_dissect_element_BrowserrResetStatistics_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetStatistics_unknown, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetStatistics_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1683,9 +1740,13 @@ browser_dissect_element_NetrBrowserStatisticsClear_unknown(tvbuff_t *tvb _U_, in static int browser_dissect_element_NetrBrowserStatisticsClear_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsClear_unknown, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsClear_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1729,9 +1790,13 @@ browser_dissect_element_NetrBrowserStatisticsGet_unknown1(tvbuff_t *tvb _U_, int static int browser_dissect_element_NetrBrowserStatisticsGet_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsGet_unknown1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsGet_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1808,9 +1873,13 @@ browser_dissect_element_BrowserrSetNetlogonState_unknown1(tvbuff_t *tvb _U_, int static int browser_dissect_element_BrowserrSetNetlogonState_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1827,9 +1896,13 @@ browser_dissect_element_BrowserrSetNetlogonState_unknown2(tvbuff_t *tvb _U_, int static int browser_dissect_element_BrowserrSetNetlogonState_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1846,9 +1919,13 @@ browser_dissect_element_BrowserrSetNetlogonState_unknown3(tvbuff_t *tvb _U_, int static int browser_dissect_element_BrowserrSetNetlogonState_unknown3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown3, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown3, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1909,9 +1986,13 @@ browser_dissect_element_BrowserrQueryEmulatedDomains_unknown1(tvbuff_t *tvb _U_, static int browser_dissect_element_BrowserrQueryEmulatedDomains_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryEmulatedDomains_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryEmulatedDomains_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1977,9 +2058,13 @@ browser_dissect_element_BrowserrServerEnumEx_unknown1(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrServerEnumEx_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1996,9 +2081,13 @@ browser_dissect_element_BrowserrServerEnumEx_unknown2(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrServerEnumEx_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2015,9 +2104,13 @@ browser_dissect_element_BrowserrServerEnumEx_unknown3(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrServerEnumEx_unknown3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown3, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown3, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2082,9 +2175,13 @@ browser_dissect_element_BrowserrServerEnumEx_unknown7(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrServerEnumEx_unknown7_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown7, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown7, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2101,9 +2198,13 @@ browser_dissect_element_BrowserrServerEnumEx_unknown8(tvbuff_t *tvb _U_, int off static int browser_dissect_element_BrowserrServerEnumEx_unknown8_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown8, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown8, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-clusapi.c b/epan/dissectors/packet-dcerpc-clusapi.c index de6a0791aa..774229ac9f 100644 --- a/epan/dissectors/packet-dcerpc-clusapi.c +++ b/epan/dissectors/packet-dcerpc-clusapi.c @@ -965,8 +965,9 @@ static int clusapi_dissect_element_ENUM_ENTRY_Type(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_ENUM_ENTRY_Name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_ENUM_ENTRY_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int clusapi_dissect_element_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_element_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int clusapi_dissect_element_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_conformant_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1000,11 +1001,13 @@ static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties(tvbuff_t *tv static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int clusapi_dissect_element_GROUP_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int clusapi_dissect_element_GROUP_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_conformant_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int clusapi_dissect_element_RESOURCE_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int clusapi_dissect_conformant_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string clusapi_clusapi_CreateResourceFlags_vals[] = { { CLUSTER_RESOURCE_DEFAULT_MONITOR, "CLUSTER_RESOURCE_DEFAULT_MONITOR" }, { CLUSTER_RESOURCE_SEPARATE_MONITOR, "CLUSTER_RESOURCE_SEPARATE_MONITOR" }, @@ -2869,7 +2872,13 @@ clusapi_dissect_element_RPC_SECURITY_DESCRIPTOR_lpSecurityDescriptor(tvbuff_t *t static int clusapi_dissect_element_RPC_SECURITY_DESCRIPTOR_lpSecurityDescriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_RPC_SECURITY_DESCRIPTOR_lpSecurityDescriptor__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_RPC_SECURITY_DESCRIPTOR_lpSecurityDescriptor__); return offset; } @@ -3288,9 +3297,13 @@ clusapi_dissect_element_ENUM_ENTRY_Name(tvbuff_t *tvb _U_, int offset _U_, packe static int clusapi_dissect_element_ENUM_ENTRY_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_ENUM_ENTRY_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_ENUM_ENTRY_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3342,9 +3355,10 @@ clusapi_dissect_element_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int offset _U_, } static int -clusapi_dissect_element_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +clusapi_dissect_element_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ENUM_LIST_Entry_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, clusapi_dissect_element_ENUM_LIST_Entry_); return offset; } @@ -3357,13 +3371,24 @@ clusapi_dissect_element_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset _U_, pack return offset; } +static int +clusapi_dissect_conformant_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int clusapi_dissect_struct_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Entry = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = clusapi_dissect_conformant_ENUM_LIST_Entry(tvb, offset, pinfo, parent_tree, di, drep, &nga_Entry); + ALIGN_TO_5_BYTES; old_offset = offset; @@ -3375,16 +3400,12 @@ clusapi_dissect_struct_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = clusapi_dissect_element_ENUM_LIST_EntryCount(tvb, offset, pinfo, tree, di, drep); - offset = clusapi_dissect_element_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep); + offset = clusapi_dissect_element_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep, &nga_Entry); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } @@ -3412,9 +3433,13 @@ clusapi_dissect_element_GROUP_ENUM_ENTRY_Name(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3431,9 +3456,13 @@ clusapi_dissect_element_GROUP_ENUM_ENTRY_Id(tvbuff_t *tvb _U_, int offset _U_, p static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Id, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Id, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3458,9 +3487,13 @@ clusapi_dissect_element_GROUP_ENUM_ENTRY_Owner(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Owner_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Owner, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_GROUP_ENUM_ENTRY_Owner, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3493,7 +3526,11 @@ clusapi_dissect_element_GROUP_ENUM_ENTRY_Properties(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_GROUP_ENUM_ENTRY_Properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GROUP_ENUM_ENTRY_Properties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GROUP_ENUM_ENTRY_Properties__); return offset; } @@ -3525,7 +3562,11 @@ clusapi_dissect_element_GROUP_ENUM_ENTRY_RoProperties(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_GROUP_ENUM_ENTRY_RoProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GROUP_ENUM_ENTRY_RoProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GROUP_ENUM_ENTRY_RoProperties__); return offset; } @@ -3606,9 +3647,13 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Name(tvbuff_t *tvb _U_, int offset _ static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3625,9 +3670,13 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Id(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_Id, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_Id, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3644,9 +3693,13 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_OwnerName(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_OwnerName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_OwnerName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_OwnerName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3663,9 +3716,13 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_OwnerId(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_OwnerId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_OwnerId, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_RESOURCE_ENUM_ENTRY_OwnerId, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3690,7 +3747,11 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Properties(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Properties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_RESOURCE_ENUM_ENTRY_Properties__); return offset; } @@ -3722,7 +3783,11 @@ clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_RESOURCE_ENUM_ENTRY_RoProperties__); return offset; } @@ -3793,9 +3858,10 @@ clusapi_dissect_element_GROUP_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int offset } static int -clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GROUP_ENUM_LIST_Entry_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, clusapi_dissect_element_GROUP_ENUM_LIST_Entry_); return offset; } @@ -3808,13 +3874,24 @@ clusapi_dissect_element_GROUP_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset _U_ return offset; } +static int +clusapi_dissect_conformant_GROUP_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int clusapi_dissect_struct_GROUP_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Entry = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = clusapi_dissect_conformant_GROUP_ENUM_LIST_Entry(tvb, offset, pinfo, parent_tree, di, drep, &nga_Entry); + ALIGN_TO_5_BYTES; old_offset = offset; @@ -3826,16 +3903,12 @@ clusapi_dissect_struct_GROUP_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, packet offset = clusapi_dissect_element_GROUP_ENUM_LIST_EntryCount(tvb, offset, pinfo, tree, di, drep); - offset = clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep); + offset = clusapi_dissect_element_GROUP_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep, &nga_Entry); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } @@ -3854,9 +3927,10 @@ clusapi_dissect_element_RESOURCE_ENUM_LIST_EntryCount(tvbuff_t *tvb _U_, int off } static int -clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry_); return offset; } @@ -3869,13 +3943,24 @@ clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry_(tvbuff_t *tvb _U_, int offset return offset; } +static int +clusapi_dissect_conformant_RESOURCE_ENUM_LIST_Entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int clusapi_dissect_struct_RESOURCE_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Entry = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = clusapi_dissect_conformant_RESOURCE_ENUM_LIST_Entry(tvb, offset, pinfo, parent_tree, di, drep, &nga_Entry); + ALIGN_TO_5_BYTES; old_offset = offset; @@ -3887,16 +3972,12 @@ clusapi_dissect_struct_RESOURCE_ENUM_LIST(tvbuff_t *tvb _U_, int offset _U_, pac offset = clusapi_dissect_element_RESOURCE_ENUM_LIST_EntryCount(tvb, offset, pinfo, tree, di, drep); - offset = clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep); + offset = clusapi_dissect_element_RESOURCE_ENUM_LIST_Entry(tvb, offset, pinfo, tree, di, drep, &nga_Entry); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } @@ -4588,7 +4669,11 @@ clusapi_dissect_element_NOTIFICATION_DATA_RPC_buffer(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_NOTIFICATION_DATA_RPC_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NOTIFICATION_DATA_RPC_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NOTIFICATION_DATA_RPC_buffer__); return offset; } @@ -4620,9 +4705,13 @@ clusapi_dissect_element_NOTIFICATION_DATA_RPC_ObjectId(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NOTIFICATION_DATA_RPC_ObjectId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_ObjectId, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_ObjectId, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4639,9 +4728,13 @@ clusapi_dissect_element_NOTIFICATION_DATA_RPC_ParentId(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NOTIFICATION_DATA_RPC_ParentId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_ParentId, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_ParentId, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4658,9 +4751,13 @@ clusapi_dissect_element_NOTIFICATION_DATA_RPC_Name(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_NOTIFICATION_DATA_RPC_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4677,9 +4774,13 @@ clusapi_dissect_element_NOTIFICATION_DATA_RPC_Type(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_NOTIFICATION_DATA_RPC_Type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_Type, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_RPC_Type, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4869,9 +4970,13 @@ clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pszNodeName(tvbuff_t *tvb _U_, static int clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pszNodeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_CLUSTER_MRR_NODE_RESPONSE_pszNodeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_CLUSTER_MRR_NODE_RESPONSE_pszNodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4904,7 +5009,11 @@ clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pResultData(tvbuff_t *tvb _U_, static int clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pResultData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pResultData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CLUSTER_MRR_NODE_RESPONSE_pResultData__); return offset; } @@ -4977,7 +5086,11 @@ clusapi_dissect_element_CLUSTER_MRR_RESPONSE_pNodes(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_CLUSTER_MRR_RESPONSE_pNodes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CLUSTER_MRR_RESPONSE_pNodes__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CLUSTER_MRR_RESPONSE_pNodes__); return offset; } @@ -5055,9 +5168,13 @@ clusapi_dissect_element_NOTIFICATION_DATA_ASYNC_RPC_Name(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_NOTIFICATION_DATA_ASYNC_RPC_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_ASYNC_RPC_Name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_NOTIFICATION_DATA_ASYNC_RPC_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5728,9 +5845,13 @@ clusapi_dissect_element_SetClusterName_NewClusterName(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_SetClusterName_NewClusterName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetClusterName_NewClusterName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetClusterName_NewClusterName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5802,9 +5923,13 @@ clusapi_dissect_element_GetClusterName_ClusterName_(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_GetClusterName_ClusterName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterName_ClusterName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterName_ClusterName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5829,9 +5954,13 @@ clusapi_dissect_element_GetClusterName_NodeName_(tvbuff_t *tvb _U_, int offset _ static int clusapi_dissect_element_GetClusterName_NodeName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterName_NodeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterName_NodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5936,9 +6065,13 @@ clusapi_dissect_element_GetClusterVersion_lpszVendorId_(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_GetClusterVersion_lpszVendorId__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion_lpszVendorId, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion_lpszVendorId, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5963,9 +6096,13 @@ clusapi_dissect_element_GetClusterVersion_lpszCSDVersion_(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_GetClusterVersion_lpszCSDVersion__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion_lpszCSDVersion, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion_lpszCSDVersion, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6034,9 +6171,13 @@ clusapi_dissect_element_GetQuorumResource_lpszResourceName_(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_GetQuorumResource_lpszResourceName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetQuorumResource_lpszResourceName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetQuorumResource_lpszResourceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6061,9 +6202,13 @@ clusapi_dissect_element_GetQuorumResource_lpszDeviceName_(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_GetQuorumResource_lpszDeviceName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetQuorumResource_lpszDeviceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetQuorumResource_lpszDeviceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6160,9 +6305,13 @@ clusapi_dissect_element_SetQuorumResource_lpszDeviceName(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_SetQuorumResource_lpszDeviceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetQuorumResource_lpszDeviceName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetQuorumResource_lpszDeviceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6323,9 +6472,13 @@ clusapi_dissect_element_OpenResource_lpszResourceName(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_OpenResource_lpszResourceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenResource_lpszResourceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenResource_lpszResourceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6430,9 +6583,13 @@ clusapi_dissect_element_CreateResource_lpszResourceName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_CreateResource_lpszResourceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResource_lpszResourceName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResource_lpszResourceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6449,9 +6606,13 @@ clusapi_dissect_element_CreateResource_lpszResourceType(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_CreateResource_lpszResourceType_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResource_lpszResourceType, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResource_lpszResourceType, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6698,9 +6859,13 @@ clusapi_dissect_element_GetResourceState_NodeName_(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_GetResourceState_NodeName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceState_NodeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceState_NodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6725,9 +6890,13 @@ clusapi_dissect_element_GetResourceState_GroupName_(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_GetResourceState_GroupName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceState_GroupName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceState_GroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6811,9 +6980,13 @@ clusapi_dissect_element_SetResourceName_lpszResourceName(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_SetResourceName_lpszResourceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetResourceName_lpszResourceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetResourceName_lpszResourceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6896,9 +7069,13 @@ clusapi_dissect_element_GetResourceId_pGuid_(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_GetResourceId_pGuid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceId_pGuid, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceId_pGuid, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6982,9 +7159,13 @@ clusapi_dissect_element_GetResourceType_lpszResourceType_(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_GetResourceType_lpszResourceType__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceType_lpszResourceType, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceType_lpszResourceType, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7707,9 +7888,13 @@ clusapi_dissect_element_CreateResourceType_lpszTypeName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_CreateResourceType_lpszTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszTypeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7726,9 +7911,13 @@ clusapi_dissect_element_CreateResourceType_lpszDisplayName(tvbuff_t *tvb _U_, in static int clusapi_dissect_element_CreateResourceType_lpszDisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszDisplayName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszDisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7745,9 +7934,13 @@ clusapi_dissect_element_CreateResourceType_lpszDllName(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_CreateResourceType_lpszDllName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszDllName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResourceType_lpszDllName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7839,9 +8032,13 @@ clusapi_dissect_element_DeleteResourceType_lpszTypeName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_DeleteResourceType_lpszTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteResourceType_lpszTypeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteResourceType_lpszTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8001,9 +8198,13 @@ clusapi_dissect_element_CreateKey_lpSubKey(tvbuff_t *tvb _U_, int offset _U_, pa static int clusapi_dissect_element_CreateKey_lpSubKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateKey_lpSubKey, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateKey_lpSubKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8172,9 +8373,13 @@ clusapi_dissect_element_OpenKey_lpSubKey(tvbuff_t *tvb _U_, int offset _U_, pack static int clusapi_dissect_element_OpenKey_lpSubKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenKey_lpSubKey, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenKey_lpSubKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8309,9 +8514,13 @@ clusapi_dissect_element_EnumKey_KeyName_(tvbuff_t *tvb _U_, int offset _U_, pack static int clusapi_dissect_element_EnumKey_KeyName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_EnumKey_KeyName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_EnumKey_KeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8410,9 +8619,13 @@ clusapi_dissect_element_SetValue_lpValueName(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_SetValue_lpValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetValue_lpValueName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetValue_lpValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8437,7 +8650,11 @@ clusapi_dissect_element_SetValue_lpData(tvbuff_t *tvb _U_, int offset _U_, packe static int clusapi_dissect_element_SetValue_lpData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_SetValue_lpData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_SetValue_lpData__); return offset; } @@ -8536,9 +8753,13 @@ clusapi_dissect_element_DeleteValue_lpValueName(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_DeleteValue_lpValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteValue_lpValueName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteValue_lpValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8613,9 +8834,13 @@ clusapi_dissect_element_QueryValue_lpValueName(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_QueryValue_lpValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_QueryValue_lpValueName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_QueryValue_lpValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8648,7 +8873,11 @@ clusapi_dissect_element_QueryValue_lpData(tvbuff_t *tvb _U_, int offset _U_, pac static int clusapi_dissect_element_QueryValue_lpData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_QueryValue_lpData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_QueryValue_lpData__); return offset; } @@ -8769,9 +8998,13 @@ clusapi_dissect_element_DeleteKey_lpSubKey(tvbuff_t *tvb _U_, int offset _U_, pa static int clusapi_dissect_element_DeleteKey_lpSubKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteKey_lpSubKey, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_DeleteKey_lpSubKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8862,9 +9095,13 @@ clusapi_dissect_element_EnumValue_lpValueName_(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_EnumValue_lpValueName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_EnumValue_lpValueName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_EnumValue_lpValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8897,7 +9134,11 @@ clusapi_dissect_element_EnumValue_lpData(tvbuff_t *tvb _U_, int offset _U_, pack static int clusapi_dissect_element_EnumValue_lpData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_EnumValue_lpData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_EnumValue_lpData__); return offset; } @@ -9439,9 +9680,13 @@ clusapi_dissect_element_OpenGroup_lpszGroupName(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_OpenGroup_lpszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroup_lpszGroupName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroup_lpszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9538,9 +9783,13 @@ clusapi_dissect_element_CreateGroup_lpszGroupName(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_CreateGroup_lpszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroup_lpszGroupName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroup_lpszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9781,9 +10030,13 @@ clusapi_dissect_element_GetGroupState_NodeName_(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_GetGroupState_NodeName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetGroupState_NodeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetGroupState_NodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9863,9 +10116,13 @@ clusapi_dissect_element_SetGroupName_lpszGroupName(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_SetGroupName_lpszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupName_lpszGroupName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupName_lpszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9948,9 +10205,13 @@ clusapi_dissect_element_GetGroupId_pGuid_(tvbuff_t *tvb _U_, int offset _U_, pac static int clusapi_dissect_element_GetGroupId_pGuid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetGroupId_pGuid, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetGroupId_pGuid, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -10034,9 +10295,13 @@ clusapi_dissect_element_GetNodeId_pGuid_(tvbuff_t *tvb _U_, int offset _U_, pack static int clusapi_dissect_element_GetNodeId_pGuid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNodeId_pGuid, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNodeId_pGuid, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -10437,7 +10702,11 @@ clusapi_dissect_element_SetGroupNodeList_multiSzNodeList(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_SetGroupNodeList_multiSzNodeList_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_SetGroupNodeList_multiSzNodeList__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_SetGroupNodeList_multiSzNodeList__); return offset; } @@ -11517,9 +11786,13 @@ clusapi_dissect_element_GetNotify_Name_(tvbuff_t *tvb _U_, int offset _U_, packe static int clusapi_dissect_element_GetNotify_Name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNotify_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNotify_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -11599,9 +11872,13 @@ clusapi_dissect_element_OpenNode_lpszNodeName(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_OpenNode_lpszNodeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNode_lpszNodeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNode_lpszNodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -12008,7 +12285,11 @@ clusapi_dissect_element_NodeResourceControl_lpInBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NodeResourceControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeResourceControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeResourceControl_lpInBuffer__); return offset; } @@ -12040,7 +12321,13 @@ clusapi_dissect_element_NodeResourceControl_lpOutBuffer(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_NodeResourceControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeResourceControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeResourceControl_lpOutBuffer__); return offset; } @@ -12194,7 +12481,11 @@ clusapi_dissect_element_ResourceControl_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_ResourceControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ResourceControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ResourceControl_lpInBuffer__); return offset; } @@ -12226,7 +12517,13 @@ clusapi_dissect_element_ResourceControl_lpOutBuffer(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_ResourceControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ResourceControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ResourceControl_lpOutBuffer__); return offset; } @@ -12369,9 +12666,13 @@ clusapi_dissect_element_NodeResourceTypeControl_lpszResourceTypeName(tvbuff_t *t static int clusapi_dissect_element_NodeResourceTypeControl_lpszResourceTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_NodeResourceTypeControl_lpszResourceTypeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_NodeResourceTypeControl_lpszResourceTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -12404,7 +12705,11 @@ clusapi_dissect_element_NodeResourceTypeControl_lpInBuffer(tvbuff_t *tvb _U_, in static int clusapi_dissect_element_NodeResourceTypeControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeResourceTypeControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeResourceTypeControl_lpInBuffer__); return offset; } @@ -12436,7 +12741,13 @@ clusapi_dissect_element_NodeResourceTypeControl_lpOutBuffer(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_NodeResourceTypeControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeResourceTypeControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeResourceTypeControl_lpOutBuffer__); return offset; } @@ -12585,9 +12896,13 @@ clusapi_dissect_element_ResourceTypeControl_lpszResourceTypeName(tvbuff_t *tvb _ static int clusapi_dissect_element_ResourceTypeControl_lpszResourceTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_ResourceTypeControl_lpszResourceTypeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_ResourceTypeControl_lpszResourceTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -12612,7 +12927,11 @@ clusapi_dissect_element_ResourceTypeControl_lpInBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_ResourceTypeControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ResourceTypeControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ResourceTypeControl_lpInBuffer__); return offset; } @@ -12644,7 +12963,13 @@ clusapi_dissect_element_ResourceTypeControl_lpOutBuffer(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_ResourceTypeControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ResourceTypeControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ResourceTypeControl_lpOutBuffer__); return offset; } @@ -12806,7 +13131,11 @@ clusapi_dissect_element_NodeGroupControl_lpInBuffer(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_NodeGroupControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeGroupControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeGroupControl_lpInBuffer__); return offset; } @@ -12838,7 +13167,13 @@ clusapi_dissect_element_NodeGroupControl_lpOutBuffer(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_NodeGroupControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeGroupControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeGroupControl_lpOutBuffer__); return offset; } @@ -12992,7 +13327,11 @@ clusapi_dissect_element_GroupControl_lpInBuffer(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_GroupControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GroupControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GroupControl_lpInBuffer__); return offset; } @@ -13024,7 +13363,13 @@ clusapi_dissect_element_GroupControl_lpOutBuffer(tvbuff_t *tvb _U_, int offset _ static int clusapi_dissect_element_GroupControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GroupControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GroupControl_lpOutBuffer__); return offset; } @@ -13183,7 +13528,11 @@ clusapi_dissect_element_NodeNodeControl_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_NodeNodeControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNodeControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNodeControl_lpInBuffer__); return offset; } @@ -13215,7 +13564,13 @@ clusapi_dissect_element_NodeNodeControl_lpOutBuffer(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_NodeNodeControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNodeControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNodeControl_lpOutBuffer__); return offset; } @@ -13369,7 +13724,11 @@ clusapi_dissect_element_NodeControl_lpInBuffer(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_NodeControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeControl_lpInBuffer__); return offset; } @@ -13401,7 +13760,13 @@ clusapi_dissect_element_NodeControl_lpOutBuffer(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_NodeControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeControl_lpOutBuffer__); return offset; } @@ -13561,9 +13926,13 @@ clusapi_dissect_element_OpenNetwork_lpszNetworkName(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_OpenNetwork_lpszNetworkName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetwork_lpszNetworkName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetwork_lpszNetworkName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13789,9 +14158,13 @@ clusapi_dissect_element_SetNetworkName_lpszNetworkName(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_SetNetworkName_lpszNetworkName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetNetworkName_lpszNetworkName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetNetworkName_lpszNetworkName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13968,9 +14341,13 @@ clusapi_dissect_element_GetNetworkId_pGuid_(tvbuff_t *tvb _U_, int offset _U_, p static int clusapi_dissect_element_GetNetworkId_pGuid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetworkId_pGuid, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetworkId_pGuid, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14038,9 +14415,13 @@ clusapi_dissect_element_SetNetworkPriorityOrder_NetworkCount(tvbuff_t *tvb _U_, static int clusapi_dissect_element_SetNetworkPriorityOrder_NetworkIdList(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetNetworkPriorityOrder_NetworkIdList, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetNetworkPriorityOrder_NetworkIdList, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14131,7 +14512,11 @@ clusapi_dissect_element_NodeNetworkControl_lpInBuffer(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_NodeNetworkControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNetworkControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNetworkControl_lpInBuffer__); return offset; } @@ -14163,7 +14548,13 @@ clusapi_dissect_element_NodeNetworkControl_lpOutBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NodeNetworkControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNetworkControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNetworkControl_lpOutBuffer__); return offset; } @@ -14317,7 +14708,11 @@ clusapi_dissect_element_NetworkControl_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_NetworkControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NetworkControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NetworkControl_lpInBuffer__); return offset; } @@ -14349,7 +14744,13 @@ clusapi_dissect_element_NetworkControl_lpOutBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_NetworkControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NetworkControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NetworkControl_lpOutBuffer__); return offset; } @@ -14691,9 +15092,13 @@ clusapi_dissect_element_OpenNetInterface_lpszNetInterfaceName(tvbuff_t *tvb _U_, static int clusapi_dissect_element_OpenNetInterface_lpszNetInterfaceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetInterface_lpszNetInterfaceName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetInterface_lpszNetInterfaceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14911,9 +15316,13 @@ clusapi_dissect_element_GetNetInterface_lpszNodeName(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_GetNetInterface_lpszNodeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lpszNodeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lpszNodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14930,9 +15339,13 @@ clusapi_dissect_element_GetNetInterface_lpszNetworkName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_GetNetInterface_lpszNetworkName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lpszNetworkName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lpszNetworkName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14957,9 +15370,13 @@ clusapi_dissect_element_GetNetInterface_lppszInterfaceName_(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_GetNetInterface_lppszInterfaceName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lppszInterfaceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterface_lppszInterfaceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15046,9 +15463,13 @@ clusapi_dissect_element_GetNetInterfaceId_pGuid_(tvbuff_t *tvb _U_, int offset _ static int clusapi_dissect_element_GetNetInterfaceId_pGuid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterfaceId_pGuid, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetNetInterfaceId_pGuid, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15140,7 +15561,11 @@ clusapi_dissect_element_NodeNetInterfaceControl_lpInBuffer(tvbuff_t *tvb _U_, in static int clusapi_dissect_element_NodeNetInterfaceControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNetInterfaceControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNetInterfaceControl_lpInBuffer__); return offset; } @@ -15172,7 +15597,13 @@ clusapi_dissect_element_NodeNetInterfaceControl_lpOutBuffer(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_NodeNetInterfaceControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeNetInterfaceControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeNetInterfaceControl_lpOutBuffer__); return offset; } @@ -15326,7 +15757,11 @@ clusapi_dissect_element_NetInterfaceControl_lpInBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NetInterfaceControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NetInterfaceControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NetInterfaceControl_lpInBuffer__); return offset; } @@ -15358,7 +15793,13 @@ clusapi_dissect_element_NetInterfaceControl_lpOutBuffer(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_NetInterfaceControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NetInterfaceControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NetInterfaceControl_lpOutBuffer__); return offset; } @@ -15850,9 +16291,13 @@ clusapi_dissect_element_GetClusterVersion2_lpszVendorId_(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_GetClusterVersion2_lpszVendorId__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion2_lpszVendorId, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion2_lpszVendorId, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15877,9 +16322,13 @@ clusapi_dissect_element_GetClusterVersion2_lpszCSDVersion_(tvbuff_t *tvb _U_, in static int clusapi_dissect_element_GetClusterVersion2_lpszCSDVersion__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion2_lpszCSDVersion, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetClusterVersion2_lpszCSDVersion, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15988,9 +16437,13 @@ clusapi_dissect_element_CreateResTypeEnum_lpszTypeName(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_CreateResTypeEnum_lpszTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResTypeEnum_lpszTypeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateResTypeEnum_lpszTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16093,9 +16546,13 @@ clusapi_dissect_element_BackupClusterDatabase_lpszPathName(tvbuff_t *tvb _U_, in static int clusapi_dissect_element_BackupClusterDatabase_lpszPathName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_BackupClusterDatabase_lpszPathName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_BackupClusterDatabase_lpszPathName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16183,7 +16640,11 @@ clusapi_dissect_element_NodeClusterControl_lpInBuffer(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_NodeClusterControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeClusterControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeClusterControl_lpInBuffer__); return offset; } @@ -16215,7 +16676,13 @@ clusapi_dissect_element_NodeClusterControl_lpOutBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NodeClusterControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeClusterControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeClusterControl_lpOutBuffer__); return offset; } @@ -16369,7 +16836,11 @@ clusapi_dissect_element_ClusterControl_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_ClusterControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ClusterControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ClusterControl_lpInBuffer__); return offset; } @@ -16401,7 +16872,13 @@ clusapi_dissect_element_ClusterControl_lpOutBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_ClusterControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ClusterControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ClusterControl_lpOutBuffer__); return offset; } @@ -16571,9 +17048,13 @@ clusapi_dissect_element_SetServiceAccountPassword_lpszNewPassword(tvbuff_t *tvb static int clusapi_dissect_element_SetServiceAccountPassword_lpszNewPassword_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetServiceAccountPassword_lpszNewPassword, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetServiceAccountPassword_lpszNewPassword, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16590,7 +17071,13 @@ clusapi_dissect_element_SetServiceAccountPassword_dwFlags(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_SetServiceAccountPassword_ReturnStatusBufferPtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_SetServiceAccountPassword_ReturnStatusBufferPtr_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_SetServiceAccountPassword_ReturnStatusBufferPtr_); return offset; } @@ -16707,9 +17194,13 @@ clusapi_dissect_element_SetResourceDependencyExpression_lpszDependencyExpression static int clusapi_dissect_element_SetResourceDependencyExpression_lpszDependencyExpression_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetResourceDependencyExpression_lpszDependencyExpression, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetResourceDependencyExpression_lpszDependencyExpression, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16792,9 +17283,13 @@ clusapi_dissect_element_GetResourceDependencyExpression_lpszDependencyExpression static int clusapi_dissect_element_GetResourceDependencyExpression_lpszDependencyExpression__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceDependencyExpression_lpszDependencyExpression, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceDependencyExpression_lpszDependencyExpression, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16903,9 +17398,13 @@ clusapi_dissect_element_GetResourceNetworkName_lpszName_(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_GetResourceNetworkName_lpszName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceNetworkName_lpszName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_GetResourceNetworkName_lpszName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16989,7 +17488,11 @@ clusapi_dissect_element_ExecuteBatch_lpData(tvbuff_t *tvb _U_, int offset _U_, p static int clusapi_dissect_element_ExecuteBatch_lpData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ExecuteBatch_lpData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ExecuteBatch_lpData__); return offset; } @@ -17193,7 +17696,11 @@ clusapi_dissect_element_GetBatchNotification_lpData_(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_GetBatchNotification_lpData__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GetBatchNotification_lpData___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GetBatchNotification_lpData___); return offset; } @@ -17386,9 +17893,13 @@ clusapi_dissect_element_OpenNodeEx_lpszNodeName(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_OpenNodeEx_lpszNodeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNodeEx_lpszNodeName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNodeEx_lpszNodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17516,9 +18027,13 @@ clusapi_dissect_element_OpenGroupEx_lpszGroupName(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_OpenGroupEx_lpszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroupEx_lpszGroupName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroupEx_lpszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17646,9 +18161,13 @@ clusapi_dissect_element_OpenResourceEx_lpszResourceName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_OpenResourceEx_lpszResourceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenResourceEx_lpszResourceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenResourceEx_lpszResourceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17776,9 +18295,13 @@ clusapi_dissect_element_OpenNetworkEx_lpszNetworkName(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_OpenNetworkEx_lpszNetworkName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetworkEx_lpszNetworkName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetworkEx_lpszNetworkName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17906,9 +18429,13 @@ clusapi_dissect_element_OpenNetInterfaceEx_lpszNetInterfaceName(tvbuff_t *tvb _U static int clusapi_dissect_element_OpenNetInterfaceEx_lpszNetInterfaceName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetInterfaceEx_lpszNetInterfaceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenNetInterfaceEx_lpszNetInterfaceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18599,9 +19126,13 @@ clusapi_dissect_element_CreateGroupEx_lpszGroupName(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_CreateGroupEx_lpszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroupEx_lpszGroupName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroupEx_lpszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18733,7 +19264,11 @@ clusapi_dissect_element_OnlineGroupEx_lpInBuffer(tvbuff_t *tvb _U_, int offset _ static int clusapi_dissect_element_OnlineGroupEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_OnlineGroupEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_OnlineGroupEx_lpInBuffer__); return offset; } @@ -18837,7 +19372,11 @@ clusapi_dissect_element_OfflineGroupEx_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_OfflineGroupEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_OfflineGroupEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_OfflineGroupEx_lpInBuffer__); return offset; } @@ -18941,7 +19480,11 @@ clusapi_dissect_element_MoveGroupEx_lpInBuffer(tvbuff_t *tvb _U_, int offset _U_ static int clusapi_dissect_element_MoveGroupEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_MoveGroupEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_MoveGroupEx_lpInBuffer__); return offset; } @@ -19053,7 +19596,11 @@ clusapi_dissect_element_MoveGroupToNodeEx_lpInBuffer(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_MoveGroupToNodeEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_MoveGroupToNodeEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_MoveGroupToNodeEx_lpInBuffer__); return offset; } @@ -19226,7 +19773,11 @@ clusapi_dissect_element_OnlineResourceEx_lpInBuffer(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_OnlineResourceEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_OnlineResourceEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_OnlineResourceEx_lpInBuffer__); return offset; } @@ -19330,7 +19881,11 @@ clusapi_dissect_element_OfflineResourceEx_lpInBuffer(tvbuff_t *tvb _U_, int offs static int clusapi_dissect_element_OfflineResourceEx_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_OfflineResourceEx_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_OfflineResourceEx_lpInBuffer__); return offset; } @@ -19621,7 +20176,11 @@ clusapi_dissect_element_GetNotifyV2_Notifications_(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_GetNotifyV2_Notifications__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GetNotifyV2_Notifications___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GetNotifyV2_Notifications___); return offset; } @@ -19720,7 +20279,11 @@ clusapi_dissect_element_QueryAllValues_ppData(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_QueryAllValues_ppData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_QueryAllValues_ppData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_QueryAllValues_ppData__); return offset; } @@ -19736,7 +20299,11 @@ clusapi_dissect_element_QueryAllValues_ppData__(tvbuff_t *tvb _U_, int offset _U static int clusapi_dissect_element_QueryAllValues_ppData___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_QueryAllValues_ppData____); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_QueryAllValues_ppData____); return offset; } @@ -19847,7 +20414,11 @@ clusapi_dissect_element_StmFindDisk_pUniqueId(tvbuff_t *tvb _U_, int offset _U_, static int clusapi_dissect_element_StmFindDisk_pUniqueId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_StmFindDisk_pUniqueId__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_StmFindDisk_pUniqueId__); return offset; } @@ -19887,9 +20458,13 @@ clusapi_dissect_element_StmFindDisk_ppszDeviceName_(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_StmFindDisk_ppszDeviceName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_StmFindDisk_ppszDeviceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_StmFindDisk_ppszDeviceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -20028,7 +20603,11 @@ clusapi_dissect_element_ClusterMrr_pInData(tvbuff_t *tvb _U_, int offset _U_, pa static int clusapi_dissect_element_ClusterMrr_pInData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ClusterMrr_pInData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ClusterMrr_pInData__); return offset; } @@ -20052,7 +20631,11 @@ clusapi_dissect_element_ClusterMrr_ppInfo(tvbuff_t *tvb _U_, int offset _U_, pac static int clusapi_dissect_element_ClusterMrr_ppInfo_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ClusterMrr_ppInfo__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ClusterMrr_ppInfo__); return offset; } @@ -20068,7 +20651,11 @@ clusapi_dissect_element_ClusterMrr_ppInfo__(tvbuff_t *tvb _U_, int offset _U_, p static int clusapi_dissect_element_ClusterMrr_ppInfo___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ClusterMrr_ppInfo____); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ClusterMrr_ppInfo____); return offset; } @@ -20172,7 +20759,11 @@ clusapi_dissect_element_CreateGroupEnum_pProperties(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_CreateGroupEnum_pProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CreateGroupEnum_pProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CreateGroupEnum_pProperties__); return offset; } @@ -20204,7 +20795,11 @@ clusapi_dissect_element_CreateGroupEnum_pRoProperties(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_CreateGroupEnum_pRoProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CreateGroupEnum_pRoProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CreateGroupEnum_pRoProperties__); return offset; } @@ -20331,7 +20926,11 @@ clusapi_dissect_element_CreateResourceEnum_pProperties(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_CreateResourceEnum_pProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CreateResourceEnum_pProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CreateResourceEnum_pProperties__); return offset; } @@ -20363,7 +20962,11 @@ clusapi_dissect_element_CreateResourceEnum_pRoProperties(tvbuff_t *tvb _U_, int static int clusapi_dissect_element_CreateResourceEnum_pRoProperties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_CreateResourceEnum_pRoProperties__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_CreateResourceEnum_pRoProperties__); return offset; } @@ -20498,7 +21101,11 @@ clusapi_dissect_element_ExecuteReadBatch_lpInData(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_ExecuteReadBatch_lpInData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ExecuteReadBatch_lpInData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ExecuteReadBatch_lpInData__); return offset; } @@ -20546,7 +21153,11 @@ clusapi_dissect_element_ExecuteReadBatch_lpOutData_(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_ExecuteReadBatch_lpOutData__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ExecuteReadBatch_lpOutData___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ExecuteReadBatch_lpOutData___); return offset; } @@ -20713,7 +21324,11 @@ clusapi_dissect_element_GetNotifyAsync_Notifications_(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_GetNotifyAsync_Notifications__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GetNotifyAsync_Notifications___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GetNotifyAsync_Notifications___); return offset; } @@ -20987,9 +21602,13 @@ clusapi_dissect_element_AddNotifyResourceTypeV2_resTypeName(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_AddNotifyResourceTypeV2_resTypeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_AddNotifyResourceTypeV2_resTypeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_AddNotifyResourceTypeV2_resTypeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -21114,7 +21733,11 @@ clusapi_dissect_element_ExecuteReadBatchEx_lpInData(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_ExecuteReadBatchEx_lpInData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ExecuteReadBatchEx_lpInData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ExecuteReadBatchEx_lpInData__); return offset; } @@ -21170,7 +21793,11 @@ clusapi_dissect_element_ExecuteReadBatchEx_lpOutData_(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_ExecuteReadBatchEx_lpOutData__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_ExecuteReadBatchEx_lpOutData___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_ExecuteReadBatchEx_lpOutData___); return offset; } @@ -21383,9 +22010,13 @@ clusapi_dissect_element_CreateGroupSet_lpszGroupSetName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_CreateGroupSet_lpszGroupSetName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroupSet_lpszGroupSetName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateGroupSet_lpszGroupSetName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -21482,9 +22113,13 @@ clusapi_dissect_element_OpenGroupSet_lpszGroupSetName(tvbuff_t *tvb _U_, int off static int clusapi_dissect_element_OpenGroupSet_lpszGroupSetName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroupSet_lpszGroupSetName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_OpenGroupSet_lpszGroupSetName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -22050,7 +22685,11 @@ clusapi_dissect_element_NodeGroupSetControl_lpInBuffer(tvbuff_t *tvb _U_, int of static int clusapi_dissect_element_NodeGroupSetControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeGroupSetControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeGroupSetControl_lpInBuffer__); return offset; } @@ -22082,7 +22721,13 @@ clusapi_dissect_element_NodeGroupSetControl_lpOutBuffer(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_NodeGroupSetControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_NodeGroupSetControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_NodeGroupSetControl_lpOutBuffer__); return offset; } @@ -22236,7 +22881,11 @@ clusapi_dissect_element_GroupSetControl_lpInBuffer(tvbuff_t *tvb _U_, int offset static int clusapi_dissect_element_GroupSetControl_lpInBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GroupSetControl_lpInBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GroupSetControl_lpInBuffer__); return offset; } @@ -22268,7 +22917,13 @@ clusapi_dissect_element_GroupSetControl_lpOutBuffer(tvbuff_t *tvb _U_, int offse static int clusapi_dissect_element_GroupSetControl_lpOutBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, clusapi_dissect_element_GroupSetControl_lpOutBuffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, clusapi_dissect_element_GroupSetControl_lpOutBuffer__); return offset; } @@ -22411,9 +23066,13 @@ clusapi_dissect_element_SetGroupDependencyExpression_lpszDependencyExpression(tv static int clusapi_dissect_element_SetGroupDependencyExpression_lpszDependencyExpression_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupDependencyExpression_lpszDependencyExpression, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupDependencyExpression_lpszDependencyExpression, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -22554,9 +23213,13 @@ clusapi_dissect_element_SetGroupSetDependencyExpression_lpszDependencyExpression static int clusapi_dissect_element_SetGroupSetDependencyExpression_lpszDependencyExpression_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupSetDependencyExpression_lpszDependencyExpression, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_SetGroupSetDependencyExpression_lpszDependencyExpression, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -22846,9 +23509,13 @@ clusapi_dissect_element_CreateNetInterfaceEnum_lpszNodeName(tvbuff_t *tvb _U_, i static int clusapi_dissect_element_CreateNetInterfaceEnum_lpszNodeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateNetInterfaceEnum_lpszNodeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateNetInterfaceEnum_lpszNodeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -22865,9 +23532,13 @@ clusapi_dissect_element_CreateNetInterfaceEnum_lpszNetworkName(tvbuff_t *tvb _U_ static int clusapi_dissect_element_CreateNetInterfaceEnum_lpszNetworkName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateNetInterfaceEnum_lpszNetworkName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_CreateNetInterfaceEnum_lpszNetworkName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -22981,9 +23652,13 @@ clusapi_dissect_element_ChangeCsvStateEx_lpszVolumeName(tvbuff_t *tvb _U_, int o static int clusapi_dissect_element_ChangeCsvStateEx_lpszVolumeName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_ChangeCsvStateEx_lpszVolumeName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_clusapi_clusapi_ChangeCsvStateEx_lpszVolumeName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-dfs.c b/epan/dissectors/packet-dcerpc-dfs.c index 6645408a69..dfa1e18d70 100644 --- a/epan/dissectors/packet-dcerpc-dfs.c +++ b/epan/dissectors/packet-dcerpc-dfs.c @@ -464,7 +464,7 @@ static int netdfs_dissect_element_dfs_EnumInfo_info200_(tvbuff_t *tvb _U_, int o static int netdfs_dissect_element_dfs_EnumInfo_info300(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int netdfs_dissect_element_dfs_EnumInfo_info300_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int netdfs_dissect_element_dfs_EnumStruct_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int netdfs_dissect_element_dfs_EnumStruct_e(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int netdfs_dissect_element_dfs_EnumStruct_e(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int netdfs_dissect_element_dfs_UnknownStruct_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int netdfs_dissect_element_dfs_UnknownStruct_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int netdfs_dissect_element_dfs_UnknownStruct_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -610,9 +610,13 @@ netdfs_dissect_element_dfs_Info1_path(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Info1_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info1_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info1_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -708,9 +712,13 @@ netdfs_dissect_element_dfs_Info2_path(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Info2_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info2_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info2_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -727,9 +735,13 @@ netdfs_dissect_element_dfs_Info2_comment(tvbuff_t *tvb _U_, int offset _U_, pack static int netdfs_dissect_element_dfs_Info2_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info2_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info2_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -848,9 +860,13 @@ netdfs_dissect_element_dfs_StorageInfo_server(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_StorageInfo_server_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_StorageInfo_server, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_StorageInfo_server, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -867,9 +883,13 @@ netdfs_dissect_element_dfs_StorageInfo_share(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_StorageInfo_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_StorageInfo_share, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_StorageInfo_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -928,9 +948,13 @@ netdfs_dissect_element_dfs_Info3_path(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Info3_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info3_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info3_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -947,9 +971,13 @@ netdfs_dissect_element_dfs_Info3_comment(tvbuff_t *tvb _U_, int offset _U_, pack static int netdfs_dissect_element_dfs_Info3_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info3_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info3_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -982,7 +1010,11 @@ netdfs_dissect_element_dfs_Info3_stores(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_Info3_stores_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_Info3_stores__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_Info3_stores__); return offset; } @@ -1054,9 +1086,13 @@ netdfs_dissect_element_dfs_Info4_path(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Info4_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info4_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info4_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1073,9 +1109,13 @@ netdfs_dissect_element_dfs_Info4_comment(tvbuff_t *tvb _U_, int offset _U_, pack static int netdfs_dissect_element_dfs_Info4_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info4_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info4_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1124,7 +1164,11 @@ netdfs_dissect_element_dfs_Info4_stores(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_Info4_stores_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_Info4_stores__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_Info4_stores__); return offset; } @@ -1241,9 +1285,13 @@ netdfs_dissect_element_dfs_Info5_path(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Info5_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info5_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info5_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1260,9 +1308,13 @@ netdfs_dissect_element_dfs_Info5_comment(tvbuff_t *tvb _U_, int offset _U_, pack static int netdfs_dissect_element_dfs_Info5_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info5_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info5_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1524,9 +1576,13 @@ netdfs_dissect_element_dfs_Info6_entry_path(tvbuff_t *tvb _U_, int offset _U_, p static int netdfs_dissect_element_dfs_Info6_entry_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info6_entry_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info6_entry_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1543,9 +1599,13 @@ netdfs_dissect_element_dfs_Info6_comment(tvbuff_t *tvb _U_, int offset _U_, pack static int netdfs_dissect_element_dfs_Info6_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info6_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info6_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1610,7 +1670,11 @@ netdfs_dissect_element_dfs_Info6_stores(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_Info6_stores_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_Info6_stores__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_Info6_stores__); return offset; } @@ -1726,9 +1790,13 @@ netdfs_dissect_element_dfs_Info100_comment(tvbuff_t *tvb _U_, int offset _U_, pa static int netdfs_dissect_element_dfs_Info100_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info100_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info100_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1951,9 +2019,13 @@ netdfs_dissect_element_dfs_Info105_comment(tvbuff_t *tvb _U_, int offset _U_, pa static int netdfs_dissect_element_dfs_Info105_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info105_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info105_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2097,9 +2169,13 @@ netdfs_dissect_element_dfs_Info200_dom_root(tvbuff_t *tvb _U_, int offset _U_, p static int netdfs_dissect_element_dfs_Info200_dom_root_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info200_dom_root, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info200_dom_root, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2179,9 +2255,13 @@ netdfs_dissect_element_dfs_Info300_dom_root(tvbuff_t *tvb _U_, int offset _U_, p static int netdfs_dissect_element_dfs_Info300_dom_root_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info300_dom_root, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Info300_dom_root, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2490,8 +2570,9 @@ netdfs_dissect_dfs_Info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_netdfs_dfs_Info, &item, "dfs_Info"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -2584,7 +2665,11 @@ netdfs_dissect_element_dfs_EnumArray1_s(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_EnumArray1_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray1_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray1_s__); return offset; } @@ -2653,7 +2738,11 @@ netdfs_dissect_element_dfs_EnumArray2_s(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_EnumArray2_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray2_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray2_s__); return offset; } @@ -2722,7 +2811,11 @@ netdfs_dissect_element_dfs_EnumArray3_s(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_EnumArray3_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray3_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray3_s__); return offset; } @@ -2791,7 +2884,11 @@ netdfs_dissect_element_dfs_EnumArray4_s(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_EnumArray4_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray4_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray4_s__); return offset; } @@ -2860,7 +2957,11 @@ netdfs_dissect_element_dfs_EnumArray200_s(tvbuff_t *tvb _U_, int offset _U_, pac static int netdfs_dissect_element_dfs_EnumArray200_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray200_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray200_s__); return offset; } @@ -2929,7 +3030,11 @@ netdfs_dissect_element_dfs_EnumArray300_s(tvbuff_t *tvb _U_, int offset _U_, pac static int netdfs_dissect_element_dfs_EnumArray300_s_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, netdfs_dissect_element_dfs_EnumArray300_s__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, netdfs_dissect_element_dfs_EnumArray300_s__); return offset; } @@ -3092,8 +3197,9 @@ netdfs_dissect_dfs_EnumInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_netdfs_dfs_EnumInfo, &item, "dfs_EnumInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 1: @@ -3140,9 +3246,9 @@ netdfs_dissect_element_dfs_EnumStruct_level(tvbuff_t *tvb _U_, int offset _U_, p } static int -netdfs_dissect_element_dfs_EnumStruct_e(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +netdfs_dissect_element_dfs_EnumStruct_e(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = netdfs_dissect_dfs_EnumInfo(tvb, offset, pinfo, tree, di, drep, hf_netdfs_dfs_EnumStruct_e, *level); + offset = netdfs_dissect_dfs_EnumInfo(tvb, offset, pinfo, tree, di, drep, hf_netdfs_dfs_EnumStruct_e, level); return offset; } @@ -3166,7 +3272,7 @@ netdfs_dissect_struct_dfs_EnumStruct(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = netdfs_dissect_element_dfs_EnumStruct_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = netdfs_dissect_element_dfs_EnumStruct_e(tvb, offset, pinfo, tree, di, drep, &level); + offset = netdfs_dissect_element_dfs_EnumStruct_e(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -3204,9 +3310,13 @@ netdfs_dissect_element_dfs_UnknownStruct_unknown2(tvbuff_t *tvb _U_, int offset static int netdfs_dissect_element_dfs_UnknownStruct_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_UnknownStruct_unknown2, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_UnknownStruct_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3291,9 +3401,13 @@ netdfs_dissect_element_dfs_Add_path(tvbuff_t *tvb _U_, int offset _U_, packet_in static int netdfs_dissect_element_dfs_Add_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3310,9 +3424,13 @@ netdfs_dissect_element_dfs_Add_server(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_Add_server_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_server, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_server, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3329,9 +3447,13 @@ netdfs_dissect_element_dfs_Add_share(tvbuff_t *tvb _U_, int offset _U_, packet_i static int netdfs_dissect_element_dfs_Add_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_share, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3348,9 +3470,13 @@ netdfs_dissect_element_dfs_Add_comment(tvbuff_t *tvb _U_, int offset _U_, packet static int netdfs_dissect_element_dfs_Add_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Add_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3414,9 +3540,13 @@ netdfs_dissect_element_dfs_Remove_dfs_entry_path(tvbuff_t *tvb _U_, int offset _ static int netdfs_dissect_element_dfs_Remove_dfs_entry_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_dfs_entry_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_dfs_entry_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3433,9 +3563,13 @@ netdfs_dissect_element_dfs_Remove_servername(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_Remove_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3452,9 +3586,13 @@ netdfs_dissect_element_dfs_Remove_sharename(tvbuff_t *tvb _U_, int offset _U_, p static int netdfs_dissect_element_dfs_Remove_sharename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_sharename, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_Remove_sharename, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3496,9 +3634,13 @@ netdfs_dissect_dfs_Remove_request(tvbuff_t *tvb _U_, int offset _U_, packet_info static int netdfs_dissect_element_dfs_SetInfo_dfs_entry_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_dfs_entry_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_dfs_entry_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3515,9 +3657,13 @@ netdfs_dissect_element_dfs_SetInfo_servername(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_SetInfo_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3534,9 +3680,13 @@ netdfs_dissect_element_dfs_SetInfo_sharename(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_SetInfo_sharename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_sharename, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_SetInfo_sharename, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3608,9 +3758,13 @@ netdfs_dissect_dfs_SetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int netdfs_dissect_element_dfs_GetInfo_dfs_entry_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_dfs_entry_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_dfs_entry_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3627,9 +3781,13 @@ netdfs_dissect_element_dfs_GetInfo_servername(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_GetInfo_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3646,9 +3804,13 @@ netdfs_dissect_element_dfs_GetInfo_sharename(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_GetInfo_sharename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_sharename, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_GetInfo_sharename, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3911,9 +4073,13 @@ netdfs_dissect_dfs_ManagerSendSiteInfo_request(tvbuff_t *tvb _U_, int offset _U_ static int netdfs_dissect_element_dfs_AddFtRoot_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3922,9 +4088,13 @@ netdfs_dissect_element_dfs_AddFtRoot_servername(tvbuff_t *tvb _U_, int offset _U static int netdfs_dissect_element_dfs_AddFtRoot_dns_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dns_servername, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dns_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3933,9 +4103,13 @@ netdfs_dissect_element_dfs_AddFtRoot_dns_servername(tvbuff_t *tvb _U_, int offse static int netdfs_dissect_element_dfs_AddFtRoot_dfsname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dfsname, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dfsname, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3944,9 +4118,13 @@ netdfs_dissect_element_dfs_AddFtRoot_dfsname(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_AddFtRoot_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_rootshare, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3955,9 +4133,13 @@ netdfs_dissect_element_dfs_AddFtRoot_rootshare(tvbuff_t *tvb _U_, int offset _U_ static int netdfs_dissect_element_dfs_AddFtRoot_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3966,9 +4148,13 @@ netdfs_dissect_element_dfs_AddFtRoot_comment(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_AddFtRoot_dfs_config_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dfs_config_dn, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddFtRoot_dfs_config_dn, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4071,9 +4257,13 @@ netdfs_dissect_dfs_AddFtRoot_request(tvbuff_t *tvb _U_, int offset _U_, packet_i static int netdfs_dissect_element_dfs_RemoveFtRoot_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4082,9 +4272,13 @@ netdfs_dissect_element_dfs_RemoveFtRoot_servername(tvbuff_t *tvb _U_, int offset static int netdfs_dissect_element_dfs_RemoveFtRoot_dns_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_dns_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_dns_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4093,9 +4287,13 @@ netdfs_dissect_element_dfs_RemoveFtRoot_dns_servername(tvbuff_t *tvb _U_, int of static int netdfs_dissect_element_dfs_RemoveFtRoot_dfsname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_dfsname, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_dfsname, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4104,9 +4302,13 @@ netdfs_dissect_element_dfs_RemoveFtRoot_dfsname(tvbuff_t *tvb _U_, int offset _U static int netdfs_dissect_element_dfs_RemoveFtRoot_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_rootshare, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveFtRoot_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4192,9 +4394,13 @@ netdfs_dissect_dfs_RemoveFtRoot_request(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_AddStdRoot_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_servername, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4203,9 +4409,13 @@ netdfs_dissect_element_dfs_AddStdRoot_servername(tvbuff_t *tvb _U_, int offset _ static int netdfs_dissect_element_dfs_AddStdRoot_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_rootshare, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4214,9 +4424,13 @@ netdfs_dissect_element_dfs_AddStdRoot_rootshare(tvbuff_t *tvb _U_, int offset _U static int netdfs_dissect_element_dfs_AddStdRoot_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRoot_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4269,9 +4483,13 @@ netdfs_dissect_dfs_AddStdRoot_request(tvbuff_t *tvb _U_, int offset _U_, packet_ static int netdfs_dissect_element_dfs_RemoveStdRoot_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveStdRoot_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveStdRoot_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4280,9 +4498,13 @@ netdfs_dissect_element_dfs_RemoveStdRoot_servername(tvbuff_t *tvb _U_, int offse static int netdfs_dissect_element_dfs_RemoveStdRoot_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveStdRoot_rootshare, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_RemoveStdRoot_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4340,9 +4562,13 @@ netdfs_dissect_element_dfs_ManagerInitialize_servername(tvbuff_t *tvb _U_, int o static int netdfs_dissect_element_dfs_ManagerInitialize_servername_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_ManagerInitialize_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_ManagerInitialize_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4389,9 +4615,13 @@ netdfs_dissect_dfs_ManagerInitialize_request(tvbuff_t *tvb _U_, int offset _U_, static int netdfs_dissect_element_dfs_AddStdRootForced_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4400,9 +4630,13 @@ netdfs_dissect_element_dfs_AddStdRootForced_servername(tvbuff_t *tvb _U_, int of static int netdfs_dissect_element_dfs_AddStdRootForced_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_rootshare, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4411,9 +4645,13 @@ netdfs_dissect_element_dfs_AddStdRootForced_rootshare(tvbuff_t *tvb _U_, int off static int netdfs_dissect_element_dfs_AddStdRootForced_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4422,9 +4660,13 @@ netdfs_dissect_element_dfs_AddStdRootForced_comment(tvbuff_t *tvb _U_, int offse static int netdfs_dissect_element_dfs_AddStdRootForced_store(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_store, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_AddStdRootForced_store, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4519,9 +4761,13 @@ netdfs_dissect_dfs_SetDcAddress_request(tvbuff_t *tvb _U_, int offset _U_, packe static int netdfs_dissect_element_dfs_FlushFtTable_servername(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_FlushFtTable_servername, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_FlushFtTable_servername, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4530,9 +4776,13 @@ netdfs_dissect_element_dfs_FlushFtTable_servername(tvbuff_t *tvb _U_, int offset static int netdfs_dissect_element_dfs_FlushFtTable_rootshare(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_FlushFtTable_rootshare, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_FlushFtTable_rootshare, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4621,9 +4871,13 @@ netdfs_dissect_dfs_Remove2_request(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int netdfs_dissect_element_dfs_EnumEx_dfs_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_EnumEx_dfs_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_netdfs_dfs_EnumEx_dfs_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-dnsserver.c b/epan/dissectors/packet-dcerpc-dnsserver.c index e33d691a56..eed51a059e 100644 --- a/epan/dissectors/packet-dcerpc-dnsserver.c +++ b/epan/dissectors/packet-dcerpc-dnsserver.c @@ -398,17 +398,17 @@ static int dnsserver_dissect_element_DNS_RPC_RECORD_Serial(tvbuff_t *tvb _U_, in static int dnsserver_dissect_element_DNS_RPC_RECORD_TtlSeconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_RECORD_TimeStamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_RECORD_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int dnsserver_dissect_element_DNS_RPC_RECORD_record(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *Type); +static int dnsserver_dissect_element_DNS_RPC_RECORD_record(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t Type); static int dnsserver_dissect_element_DNS_RPC_NODE_Length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *RecordCount); static int dnsserver_dissect_element_DNS_RPC_NODE_Flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_NODE_Childcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_NODE_NodeName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int dnsserver_dissect_element_DNS_RPC_NODE_records_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *RecordCount); static int dnsserver_dissect_element_IP4_ARRAY_AddrCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int dnsserver_dissect_element_IP4_ARRAY_AddrArray_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int dnsserver_dissect_conformant_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_RpcStructureVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_reserved0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_Version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -597,26 +597,26 @@ dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_ proto_item_set_len(item, offset-old_offset); return offset; } -static uint16_t node_record_count; static int -dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, uint8_t *drep _U_) +dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, uint8_t *drep _U_, uint16_t *RecordCount) { if(di->conformant_run){ /*just a run to handle conformant arrays, nothing to dissect */ return offset; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_NODE_RecordCount, &node_record_count); + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_NODE_RecordCount, RecordCount); return offset; } static int -dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, uint8_t *drep _U_) +dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, uint8_t *drep _U_, uint16_t *RecordCount) { + uint16_t i; if(di->conformant_run){ /*just a run to handle conformant arrays, nothing to dissect */ return offset; } - while(node_record_count--){ - offset = dnsserver_dissect_element_DNS_RPC_NODE_records_(tvb, offset, pinfo, tree, di, drep); + for (i=0; i < *RecordCount; i++) { + offset = dnsserver_dissect_struct_DNS_RPC_RECORD(tvb,offset,pinfo,tree,di,drep,hf_dnsserver_DNS_RPC_NODE_records,0); } return offset; } @@ -1139,9 +1139,9 @@ dnsserver_dissect_element_DNS_RPC_RECORD_reserved(tvbuff_t *tvb _U_, int offset } static int -dnsserver_dissect_element_DNS_RPC_RECORD_record(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *Type) +dnsserver_dissect_element_DNS_RPC_RECORD_record(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t Type) { - offset = dnsserver_dissect_DNS_RPC_RECORD_UNION(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_RECORD_record, *Type); + offset = dnsserver_dissect_DNS_RPC_RECORD_UNION(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_RECORD_record, Type); return offset; } @@ -1177,7 +1177,7 @@ dnsserver_dissect_struct_DNS_RPC_RECORD(tvbuff_t *tvb _U_, int offset _U_, packe offset = dnsserver_dissect_element_DNS_RPC_RECORD_reserved(tvb, offset, pinfo, tree, di, drep); - offset = dnsserver_dissect_element_DNS_RPC_RECORD_record(tvb, offset, pinfo, tree, di, drep, &Type); + offset = dnsserver_dissect_element_DNS_RPC_RECORD_record(tvb, offset, pinfo, tree, di, drep, Type); proto_item_set_len(item, offset-old_offset); @@ -1232,17 +1232,10 @@ dnsserver_dissect_element_DNS_RPC_NODE_NodeName(tvbuff_t *tvb _U_, int offset _U return offset; } -static int -dnsserver_dissect_element_DNS_RPC_NODE_records_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = dnsserver_dissect_struct_DNS_RPC_RECORD(tvb,offset,pinfo,tree,di,drep,hf_dnsserver_DNS_RPC_NODE_records,0); - - return offset; -} - int dnsserver_dissect_struct_DNS_RPC_NODE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + uint16_t RecordCount = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -1258,7 +1251,7 @@ dnsserver_dissect_struct_DNS_RPC_NODE(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = dnsserver_dissect_element_DNS_RPC_NODE_Length(tvb, offset, pinfo, tree, di, drep); - offset = dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvb, offset, pinfo, tree, di, drep); + offset = dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvb, offset, pinfo, tree, di, drep, &RecordCount); offset = dnsserver_dissect_element_DNS_RPC_NODE_Flags(tvb, offset, pinfo, tree, di, drep); @@ -1266,7 +1259,7 @@ dnsserver_dissect_struct_DNS_RPC_NODE(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = dnsserver_dissect_element_DNS_RPC_NODE_NodeName(tvb, offset, pinfo, tree, di, drep); - offset = dnsserver_dissect_element_DNS_RPC_NODE_records(tvb, offset, pinfo, tree, di, drep); + offset = dnsserver_dissect_element_DNS_RPC_NODE_records(tvb, offset, pinfo, tree, di, drep, &RecordCount); proto_item_set_len(item, offset-old_offset); @@ -1294,9 +1287,10 @@ dnsserver_dissect_element_IP4_ARRAY_AddrCount(tvbuff_t *tvb _U_, int offset _U_, } static int -dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dnsserver_dissect_element_IP4_ARRAY_AddrArray_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, dnsserver_dissect_element_IP4_ARRAY_AddrArray_); return offset; } @@ -1309,13 +1303,24 @@ dnsserver_dissect_element_IP4_ARRAY_AddrArray_(tvbuff_t *tvb _U_, int offset _U_ return offset; } +static int +dnsserver_dissect_conformant_IP4_ARRAY_AddrArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int dnsserver_dissect_struct_IP4_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_AddrArray = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = dnsserver_dissect_conformant_IP4_ARRAY_AddrArray(tvb, offset, pinfo, parent_tree, di, drep, &nga_AddrArray); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -1327,16 +1332,12 @@ dnsserver_dissect_struct_IP4_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = dnsserver_dissect_element_IP4_ARRAY_AddrCount(tvb, offset, pinfo, tree, di, drep); - offset = dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvb, offset, pinfo, tree, di, drep); + offset = dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvb, offset, pinfo, tree, di, drep, &nga_AddrArray); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -1349,23 +1350,23 @@ dnsserver_dissect_struct_IP4_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_inf /* IDL: uint8 AdminConfigured; */ /* IDL: uint8 AllowUpdate; */ /* IDL: uint8 DsAvailable; */ -/* IDL: [unique(1)] uint8 *ServerName; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *ServerName; */ /* IDL: [charset(UTF16)] [unique(1)] uint16 *DsContainer; */ /* IDL: [unique(1)] IP4_ARRAY *ServerAddrs; */ /* IDL: [unique(1)] IP4_ARRAY *ListenAddrs; */ /* IDL: [unique(1)] IP4_ARRAY *Forwarders; */ /* IDL: [unique(1)] IP4_ARRAY *LogFilter; */ /* IDL: [charset(UTF16)] [unique(1)] uint16 *LogFilePath; */ -/* IDL: [unique(1)] uint8 *DomainName; */ -/* IDL: [unique(1)] uint8 *ForestName; */ -/* IDL: [unique(1)] uint8 *DomainDirectoryPartition; */ -/* IDL: [unique(1)] uint8 *ForestDirectoryPartition; */ -/* IDL: [unique(1)] uint8 *extension0; */ -/* IDL: [unique(1)] uint8 *extension1; */ -/* IDL: [unique(1)] uint8 *extension2; */ -/* IDL: [unique(1)] uint8 *extension3; */ -/* IDL: [unique(1)] uint8 *extension4; */ -/* IDL: [unique(1)] uint8 *extension5; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *DomainName; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *ForestName; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *DomainDirectoryPartition; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *ForestDirectoryPartition; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension0; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension1; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension2; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension3; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension4; */ +/* IDL: [charset(UTF8)] [unique(1)] uint8 *extension5; */ /* IDL: DNS_LOG_LEVELS LogLevel; */ /* IDL: uint32 DebugLevel; */ /* IDL: uint32 ForwardTimeout; */ @@ -1470,9 +1471,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ServerName(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ServerName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1489,9 +1494,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DsContainer(tvbuff_t *tvb _ static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DsContainer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsContainer, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsContainer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1572,9 +1581,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath(tvbuff_t *tvb _ static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1591,9 +1604,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DomainName(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DomainName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1610,9 +1627,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ForestName(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ForestName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1629,9 +1650,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition(tv static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1648,9 +1673,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition(tv static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1667,9 +1696,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension0(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension0_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension0, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension0, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1686,9 +1719,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension1(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1705,9 +1742,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension2(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1724,9 +1765,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension3(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension3, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension3, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1743,9 +1788,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension4(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension4_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension4, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension4, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1762,9 +1811,13 @@ dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension5(tvbuff_t *tvb _U static int dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_extension5_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension5, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension5, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2338,8 +2391,9 @@ dnsserver_dissect_DNSSRV_RPC_UNION(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_dnsserver_DNSSRV_RPC_UNION, &item, "DNSSRV_RPC_UNION"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case DNSSRV_TYPEID_NULL: @@ -2578,9 +2632,13 @@ dnsserver_dissect_element_DnssrvQuery2_server_name(tvbuff_t *tvb _U_, int offset static int dnsserver_dissect_element_DnssrvQuery2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DnssrvQuery2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DnssrvQuery2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2597,9 +2655,13 @@ dnsserver_dissect_element_DnssrvQuery2_zone(tvbuff_t *tvb _U_, int offset _U_, p static int dnsserver_dissect_element_DnssrvQuery2_zone_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvQuery2_zone, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvQuery2_zone, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2616,9 +2678,13 @@ dnsserver_dissect_element_DnssrvQuery2_operation(tvbuff_t *tvb _U_, int offset _ static int dnsserver_dissect_element_DnssrvQuery2_operation_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvQuery2_operation, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvQuery2_operation, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2660,8 +2726,8 @@ dnsserver_dissect_element_DnssrvQuery2_data_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: [in] DNS_RPC_CLIENT_VERSION client_version, */ /* IDL: [in] uint32 setting_flags, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ -/* IDL: [in] [unique(1)] uint8 *zone, */ -/* IDL: [in] [unique(1)] uint8 *operation, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *zone, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *operation, */ /* IDL: [out] [ref] DnssrvRpcTypeId *type_id, */ /* IDL: [out] [ref] [switch_is(*type_id)] DNSSRV_RPC_UNION *data */ /* IDL: ); */ @@ -2755,9 +2821,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_server_name(tvbuff_t *tvb _U_, int static int dnsserver_dissect_element_DnssrvEnumRecords2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DnssrvEnumRecords2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dnsserver_DnssrvEnumRecords2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2774,9 +2844,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_zone(tvbuff_t *tvb _U_, int offset static int dnsserver_dissect_element_DnssrvEnumRecords2_zone_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_zone, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_zone, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2793,9 +2867,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_node_name(tvbuff_t *tvb _U_, int of static int dnsserver_dissect_element_DnssrvEnumRecords2_node_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_node_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_node_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2812,9 +2890,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_start_child(tvbuff_t *tvb _U_, int static int dnsserver_dissect_element_DnssrvEnumRecords2_start_child_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_start_child, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_start_child, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2847,9 +2929,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_filter_start(tvbuff_t *tvb _U_, int static int dnsserver_dissect_element_DnssrvEnumRecords2_filter_start_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_filter_start, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_filter_start, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2866,9 +2952,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_filter_stop(tvbuff_t *tvb _U_, int static int dnsserver_dissect_element_DnssrvEnumRecords2_filter_stop_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_filter_stop, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_dnsserver_DnssrvEnumRecords2_filter_stop, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2901,7 +2991,7 @@ dnsserver_dissect_element_DnssrvEnumRecords2_record_buffer(tvbuff_t *tvb _U_, in static int dnsserver_dissect_element_DnssrvEnumRecords2_record_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2909,7 +2999,7 @@ dnsserver_dissect_element_DnssrvEnumRecords2_record_buffer_(tvbuff_t *tvb _U_, i uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DnssrvEnumRecords2_record_buffer_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); dnsserver_dissect_element_DnssrvEnumRecords2_record_buffer__(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2930,13 +3020,13 @@ dnsserver_dissect_element_DnssrvEnumRecords2_record_buffer__(tvbuff_t *tvb _U_, /* IDL: [in] DNS_RPC_CLIENT_VERSION client_version, */ /* IDL: [in] uint32 setting_flags, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ -/* IDL: [in] [unique(1)] uint8 *zone, */ -/* IDL: [in] [unique(1)] uint8 *node_name, */ -/* IDL: [in] [unique(1)] uint8 *start_child, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *zone, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *node_name, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *start_child, */ /* IDL: [in] DNS_RECORD_TYPE record_type, */ /* IDL: [in] DNS_SELECT_FLAGS select_flag, */ -/* IDL: [in] [unique(1)] uint8 *filter_start, */ -/* IDL: [in] [unique(1)] uint8 *filter_stop, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *filter_start, */ +/* IDL: [charset(UTF8)] [in] [unique(1)] uint8 *filter_stop, */ /* IDL: [out] [ref] uint32 *buffer_length, */ /* IDL: [out] [subcontext(4)] [unique(1)] DNS_RPC_NODE *record_buffer */ /* IDL: ); */ diff --git a/epan/dissectors/packet-dcerpc-drsuapi.c b/epan/dissectors/packet-dcerpc-drsuapi.c index 18dee10a31..0070374f99 100644 --- a/epan/dissectors/packet-dcerpc-drsuapi.c +++ b/epan/dissectors/packet-dcerpc-drsuapi.c @@ -24,10 +24,24 @@ void proto_reg_handoff_dcerpc_drsuapi(void); /* Ett declarations */ static int ett_dcerpc_drsuapi; +static int ett_drsuapi_lsa_String; +static int ett_drsuapi_supplementalCredentialsPackage; +static int ett_drsuapi_supplementalCredentialsSubBlob; +static int ett_drsuapi_supplementalCredentialsBlob; +static int ett_drsuapi_sch; +static int ett_drsuapi_package_PrimaryKerberosString; +static int ett_drsuapi_package_PrimaryKerberosKey3; +static int ett_drsuapi_package_PrimaryKerberosCtr3; +static int ett_drsuapi_package_PrimaryKerberosKey4; +static int ett_drsuapi_package_PrimaryKerberosCtr4; +static int ett_drsuapi_package_PrimaryKerberosCtr; +static int ett_drsuapi_package_PrimaryKerberosBlob; +static int ett_drsuapi_pkb; static int ett_drsuapi_security_GroupAttrs; static int ett_drsuapi_drsuapi_DrsOptions; static int ett_drsuapi_drsuapi_DrsMoreOptions; static int ett_drsuapi_drsuapi_DrsUpdate; +static int ett_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION; static int ett_drsuapi_drsuapi_SupportedExtensions; static int ett_drsuapi_drsuapi_SupportedExtensionsExt; static int ett_drsuapi_drsuapi_DsBindInfo24; @@ -40,6 +54,7 @@ static int ett_drsuapi_drsuapi_DsBindInfo; static int ett_drsuapi_drsuapi_DsBindInfoCtr; static int ett_drsuapi_drsuapi_DsReplicaObjectIdentifier; static int ett_drsuapi_drsuapi_DsReplicaSyncRequest1; +static int ett_drsuapi_drsuapi_DsReplicaSyncRequest2; static int ett_drsuapi_drsuapi_DsReplicaSyncRequest; static int ett_drsuapi_drsuapi_DsReplicaHighWaterMark; static int ett_drsuapi_drsuapi_DsReplicaCursor; @@ -51,6 +66,7 @@ static int ett_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr; static int ett_drsuapi_drsuapi_DsPartialAttributeSet; static int ett_drsuapi_drsuapi_DsGetNCChangesRequest8; static int ett_drsuapi_drsuapi_DsGetNCChangesRequest10; +static int ett_drsuapi_drsuapi_DsGetNCChangesRequest11; static int ett_drsuapi_drsuapi_DsGetNCChangesRequest; static int ett_drsuapi_drsuapi_DsReplicaCursor2; static int ett_drsuapi_drsuapi_DsReplicaCursor2CtrEx; @@ -68,21 +84,28 @@ static int ett_drsuapi_drsuapi_DsReplicaObjectListItemEx; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr1; static int ett_drsuapi_drsuapi_DsLinkedAttributeFlags; static int ett_drsuapi_drsuapi_DsReplicaLinkedAttribute; +static int ett_drsuapi_drsuapi_DsReplicaLinkedAttribute3; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr6; +static int ett_drsuapi_drsuapi_DsGetNCChangesCtr9; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr1TS; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr6TS; +static int ett_drsuapi_drsuapi_DsGetNCChangesCtr9TS; static int ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1; static int ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6; -static int ett_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1; -static int ett_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6; +static int ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9; +static int ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1; +static int ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6; +static int ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9; static int ett_drsuapi_drsuapi_DsGetNCChangesCompressedCtr; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr2; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr7; static int ett_drsuapi_drsuapi_DsGetNCChangesCtr; static int ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1; +static int ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2; static int ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest; static int ett_drsuapi_drsuapi_DsReplicaAddRequest1; static int ett_drsuapi_drsuapi_DsReplicaAddRequest2; +static int ett_drsuapi_drsuapi_DsReplicaAddRequest3; static int ett_drsuapi_drsuapi_DsReplicaAddRequest; static int ett_drsuapi_drsuapi_DsReplicaDelRequest1; static int ett_drsuapi_drsuapi_DsReplicaDelRequest; @@ -182,13 +205,48 @@ static int ett_drsuapi_drsuapi_QuerySitesByCostCtr1; static int ett_drsuapi_drsuapi_QuerySitesByCostCtr; static int ett_drsuapi_drsuapi_QuerySitesByCostRequest1; static int ett_drsuapi_drsuapi_QuerySitesByCostRequest; -static int ett_drsuapi_drsuapi_ReadNgcKeyReqV1; -static int ett_drsuapi_drsuapi_ReadNgcKeyReq; -static int ett_drsuapi_drsuapi_ReadNgcKeyReplyV1; -static int ett_drsuapi_drsuapi_ReadNgcKeyReply; +static int ett_drsuapi_drsuapi_InitDemotionRequest1; +static int ett_drsuapi_drsuapi_InitDemotionRequest; +static int ett_drsuapi_drsuapi_InitDemotionCtr1; +static int ett_drsuapi_drsuapi_InitDemotionCtr; +static int ett_drsuapi_drsuapi_ReplicaDemotionRequest1; +static int ett_drsuapi_drsuapi_ReplicaDemotionRequest; +static int ett_drsuapi_drsuapi_ReplicaDemotionCtr1; +static int ett_drsuapi_drsuapi_ReplicaDemotionCtr; +static int ett_drsuapi_drsuapi_FinishDemotionRequest1; +static int ett_drsuapi_drsuapi_FinishDemotionRequest; +static int ett_drsuapi_drsuapi_FinishDemotionCtr1; +static int ett_drsuapi_drsuapi_FinishDemotionCtr; +static int ett_drsuapi_drsuapi_AddCloneDCRequest1; +static int ett_drsuapi_drsuapi_AddCloneDCRequest; +static int ett_drsuapi_drsuapi_AddCloneDCCtr1; +static int ett_drsuapi_drsuapi_AddCloneDCCtr; +static int ett_drsuapi_drsuapi_WriteNgcKeyRequest1; +static int ett_drsuapi_drsuapi_WriteNgcKeyRequest; +static int ett_drsuapi_drsuapi_WriteNgcKeyCtr1; +static int ett_drsuapi_drsuapi_WriteNgcKeyCtr; +static int ett_drsuapi_drsuapi_ReadNgcKeyRequest1; +static int ett_drsuapi_drsuapi_ReadNgcKeyRequest; +static int ett_drsuapi_drsuapi_ReadNgcKeyCtr1; +static int ett_drsuapi_drsuapi_ReadNgcKeyCtr; /* Header field declarations */ +static int hf_DsReplicaObjectIdentifier_dn; +static int hf_drsuapi_String_name; +static int hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name; +static int hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password; +static int hf_drsuapi_drsuapi_AddCloneDCCtr1_password_length; +static int hf_drsuapi_drsuapi_AddCloneDCCtr1_site; +static int hf_drsuapi_drsuapi_AddCloneDCCtr_ctr1; +static int hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name; +static int hf_drsuapi_drsuapi_AddCloneDCRequest1_site; +static int hf_drsuapi_drsuapi_AddCloneDCRequest_req1; +static int hf_drsuapi_drsuapi_AddCloneDC_bind_handle; +static int hf_drsuapi_drsuapi_AddCloneDC_ctr; +static int hf_drsuapi_drsuapi_AddCloneDC_in_version; +static int hf_drsuapi_drsuapi_AddCloneDC_out_version; +static int hf_drsuapi_drsuapi_AddCloneDC_req; static int hf_drsuapi_drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT; static int hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ADD_REF; static int hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_OP; @@ -325,6 +383,7 @@ static int hf_drsuapi_drsuapi_DsBindInfo52_site_guid; static int hf_drsuapi_drsuapi_DsBindInfo52_supported_capabilities_ext; static int hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions; static int hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions_ext; +static int hf_drsuapi_drsuapi_DsBindInfoCtr___ndr_length; static int hf_drsuapi_drsuapi_DsBindInfoCtr_info; static int hf_drsuapi_drsuapi_DsBindInfoCtr_length; static int hf_drsuapi_drsuapi_DsBindInfoFallBack_info; @@ -444,9 +503,12 @@ static int hf_drsuapi_drsuapi_DsGetMemberships_level_out; static int hf_drsuapi_drsuapi_DsGetMemberships_req; static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip1; static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip6; +static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip9; static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress1; static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress6; +static int hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress9; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1_; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object; @@ -461,6 +523,7 @@ static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_invocation_id; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr2_mszip1; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6_; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6___ndr_size; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6_drs_error; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6_extended_ret; @@ -481,10 +544,30 @@ static int hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr7_ctr; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr7_level; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr7_type; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9TS_ctr9; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9TS_ctr9_; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9___ndr_size; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_drs_error; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_extended_ret; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes_count; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_mapping_ctr; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_more_data; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_linked_attributes_count; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_object_count; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_new_highwatermark; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_object_count; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_old_highwatermark; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_guid; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_invocation_id; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr1; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr2; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr6; static int hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr7; +static int hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr9; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_compressed_length; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_decompressed_length; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts; @@ -493,6 +576,10 @@ static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_compressed_length; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_decompressed_length; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts; static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts_; +static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_compressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_decompressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts; +static int hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts_; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_destination_dsa_guid; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_extended_op; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_fsmo_info; @@ -507,6 +594,22 @@ static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set_ex; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_replica_flags; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_source_dsa_invocation_id; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_correlationID; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_destination_dsa_guid; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_extended_op; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_fsmo_info; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_highwatermark; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_mapping_ctr; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_ndr_size; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_object_count; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_more_flags; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_replica_flags; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_source_dsa_invocation_id; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest5_destination_dsa_guid; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest5_extended_op; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest5_fsmo_info; @@ -531,16 +634,21 @@ static int hf_drsuapi_drsuapi_DsGetNCChangesRequest8_replica_flags; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest8_source_dsa_invocation_id; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest_req10; +static int hf_drsuapi_drsuapi_DsGetNCChangesRequest_req11; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest_req5; static int hf_drsuapi_drsuapi_DsGetNCChangesRequest_req8; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts; -static int hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_compressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_decompressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts_; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_compressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_decompressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts_; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_compressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_decompressed_length; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts; +static int hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts_; static int hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle; static int hf_drsuapi_drsuapi_DsGetNCChanges_ctr; static int hf_drsuapi_drsuapi_DsGetNCChanges_level; @@ -622,8 +730,17 @@ static int hf_drsuapi_drsuapi_DsReplicaAddRequest2_schedule; static int hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address; static int hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn; static int hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_correlationID; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_options; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_schedule; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn; static int hf_drsuapi_drsuapi_DsReplicaAddRequest_req1; static int hf_drsuapi_drsuapi_DsReplicaAddRequest_req2; +static int hf_drsuapi_drsuapi_DsReplicaAddRequest_req3; static int hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle; static int hf_drsuapi_drsuapi_DsReplicaAdd_level; static int hf_drsuapi_drsuapi_DsReplicaAdd_req; @@ -748,6 +865,16 @@ static int hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_num_failures; static int hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_array; static int hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_count; static int hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_reserved; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_attid; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_flags; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_meta_data; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_originating_add_time; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_timeExpired; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused1; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused2; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused3; +static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_value; static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid; static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_flags; static int hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier; @@ -867,15 +994,29 @@ static int hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context; static int hf_drsuapi_drsuapi_DsReplicaSyncRequest1_options; static int hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns; static int hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_guid; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_correlationID; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_options; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_guid; static int hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1; +static int hf_drsuapi_drsuapi_DsReplicaSyncRequest_req2; static int hf_drsuapi_drsuapi_DsReplicaSync_bind_handle; +static int hf_drsuapi_drsuapi_DsReplicaSync_level; static int hf_drsuapi_drsuapi_DsReplicaSync_req; -static int hf_drsuapi_drsuapi_DsReplicaSync_version; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_correlationID; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_guid; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_options; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req1; +static int hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req2; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level; static int hf_drsuapi_drsuapi_DsReplicaUpdateRefs_req; @@ -897,6 +1038,28 @@ static int hf_drsuapi_drsuapi_DsWriteAccountSpn_req; static int hf_drsuapi_drsuapi_DsWriteAccountSpn_res; static int hf_drsuapi_drsuapi_DsaAddressListItem_V1_address; static int hf_drsuapi_drsuapi_DsaAddressListItem_V1_next; +static int hf_drsuapi_drsuapi_FinishDemotionCtr1_op_error; +static int hf_drsuapi_drsuapi_FinishDemotionCtr1_op_failed; +static int hf_drsuapi_drsuapi_FinishDemotionCtr1_operations_done; +static int hf_drsuapi_drsuapi_FinishDemotionCtr_ctr1; +static int hf_drsuapi_drsuapi_FinishDemotionRequest1_operations; +static int hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base; +static int hf_drsuapi_drsuapi_FinishDemotionRequest1_uuid_helper_dest; +static int hf_drsuapi_drsuapi_FinishDemotionRequest_req1; +static int hf_drsuapi_drsuapi_FinishDemotion_bind_handle; +static int hf_drsuapi_drsuapi_FinishDemotion_ctr; +static int hf_drsuapi_drsuapi_FinishDemotion_in_version; +static int hf_drsuapi_drsuapi_FinishDemotion_out_version; +static int hf_drsuapi_drsuapi_FinishDemotion_req; +static int hf_drsuapi_drsuapi_InitDemotionCtr1_op_error; +static int hf_drsuapi_drsuapi_InitDemotionCtr_ctr1; +static int hf_drsuapi_drsuapi_InitDemotionRequest1_reserved; +static int hf_drsuapi_drsuapi_InitDemotionRequest_req1; +static int hf_drsuapi_drsuapi_InitDemotion_bind_handle; +static int hf_drsuapi_drsuapi_InitDemotion_ctr; +static int hf_drsuapi_drsuapi_InitDemotion_in_version; +static int hf_drsuapi_drsuapi_InitDemotion_out_version; +static int hf_drsuapi_drsuapi_InitDemotion_req; static int hf_drsuapi_drsuapi_NameResOp_V1_name_res; static int hf_drsuapi_drsuapi_NameResOp_V1_next_rdn; static int hf_drsuapi_drsuapi_NameResOp_V1_unused_pad; @@ -914,26 +1077,40 @@ static int hf_drsuapi_drsuapi_QuerySitesByCost_ctr; static int hf_drsuapi_drsuapi_QuerySitesByCost_level; static int hf_drsuapi_drsuapi_QuerySitesByCost_level_out; static int hf_drsuapi_drsuapi_QuerySitesByCost_req; -static int hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_cNgcKey; -static int hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_pNgcKey; -static int hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_retVal; -static int hf_drsuapi_drsuapi_ReadNgcKeyReply_V1; -static int hf_drsuapi_drsuapi_ReadNgcKeyReqV1_pwszAccount; -static int hf_drsuapi_drsuapi_ReadNgcKeyReq_V1; -static int hf_drsuapi_drsuapi_ReadNgcKey_hDrs; -static int hf_drsuapi_drsuapi_ReadNgcKey_inVersion; -static int hf_drsuapi_drsuapi_ReadNgcKey_ngcReply; -static int hf_drsuapi_drsuapi_ReadNgcKey_ngcReq; -static int hf_drsuapi_drsuapi_ReadNgcKey_pOutVersion; +static int hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key; +static int hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key_size; +static int hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ret_val; +static int hf_drsuapi_drsuapi_ReadNgcKeyCtr_ctr1; +static int hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account; +static int hf_drsuapi_drsuapi_ReadNgcKeyRequest_req1; +static int hf_drsuapi_drsuapi_ReadNgcKey_bind_handle; +static int hf_drsuapi_drsuapi_ReadNgcKey_ctr; +static int hf_drsuapi_drsuapi_ReadNgcKey_in_version; +static int hf_drsuapi_drsuapi_ReadNgcKey_out_version; +static int hf_drsuapi_drsuapi_ReadNgcKey_req; +static int hf_drsuapi_drsuapi_ReplicaDemotionCtr1_op_error; +static int hf_drsuapi_drsuapi_ReplicaDemotionCtr_ctr1; +static int hf_drsuapi_drsuapi_ReplicaDemotionRequest1_flags; +static int hf_drsuapi_drsuapi_ReplicaDemotionRequest1_naming_context; +static int hf_drsuapi_drsuapi_ReplicaDemotionRequest1_uuid_helper_dest; +static int hf_drsuapi_drsuapi_ReplicaDemotionRequest_req1; +static int hf_drsuapi_drsuapi_ReplicaDemotion_bind_handle; +static int hf_drsuapi_drsuapi_ReplicaDemotion_ctr; +static int hf_drsuapi_drsuapi_ReplicaDemotion_in_version; +static int hf_drsuapi_drsuapi_ReplicaDemotion_out_version; +static int hf_drsuapi_drsuapi_ReplicaDemotion_req; static int hf_drsuapi_drsuapi_SecBufferDesc_buff_count; static int hf_drsuapi_drsuapi_SecBufferDesc_buffers; static int hf_drsuapi_drsuapi_SecBufferDesc_version; static int hf_drsuapi_drsuapi_SecBuffer_buf_size; static int hf_drsuapi_drsuapi_SecBuffer_buf_type; static int hf_drsuapi_drsuapi_SecBuffer_buffer; +static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_00000008; static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM; +static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9; static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2; static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN; +static int hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1; static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY; static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3; static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2; @@ -966,7 +1143,85 @@ static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RE static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION; static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP; static int hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS; +static int hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer; +static int hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size; +static int hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_padding; +static int hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_version; +static int hf_drsuapi_drsuapi_WriteNgcKeyCtr1_ret_val; +static int hf_drsuapi_drsuapi_WriteNgcKeyCtr_ctr1; +static int hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account; +static int hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key; +static int hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key_size; +static int hf_drsuapi_drsuapi_WriteNgcKeyRequest_req1; +static int hf_drsuapi_drsuapi_WriteNgcKey_bind_handle; +static int hf_drsuapi_drsuapi_WriteNgcKey_ctr; +static int hf_drsuapi_drsuapi_WriteNgcKey_in_version; +static int hf_drsuapi_drsuapi_WriteNgcKey_out_version; +static int hf_drsuapi_drsuapi_WriteNgcKey_req; +static int hf_drsuapi_lsa_String_length; +static int hf_drsuapi_lsa_String_size; +static int hf_drsuapi_lsa_String_string; static int hf_drsuapi_opnum; +static int hf_drsuapi_package_PrimaryKerberosBlob_ctr; +static int hf_drsuapi_package_PrimaryKerberosBlob_flags; +static int hf_drsuapi_package_PrimaryKerberosBlob_version; +static int hf_drsuapi_package_PrimaryKerberosCtr3_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr3_num_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr3_num_old_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr3_old_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr3_padding1; +static int hf_drsuapi_package_PrimaryKerberosCtr3_padding2; +static int hf_drsuapi_package_PrimaryKerberosCtr3_padding3; +static int hf_drsuapi_package_PrimaryKerberosCtr3_padding4; +static int hf_drsuapi_package_PrimaryKerberosCtr3_padding5; +static int hf_drsuapi_package_PrimaryKerberosCtr3_salt; +static int hf_drsuapi_package_PrimaryKerberosCtr4_default_iteration_count; +static int hf_drsuapi_package_PrimaryKerberosCtr4_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_num_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_num_old_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_num_older_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_num_service_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_old_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_older_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr4_salt; +static int hf_drsuapi_package_PrimaryKerberosCtr4_service_keys; +static int hf_drsuapi_package_PrimaryKerberosCtr_ctr3; +static int hf_drsuapi_package_PrimaryKerberosCtr_ctr4; +static int hf_drsuapi_package_PrimaryKerberosKey3_keytype; +static int hf_drsuapi_package_PrimaryKerberosKey3_reserved1; +static int hf_drsuapi_package_PrimaryKerberosKey3_reserved2; +static int hf_drsuapi_package_PrimaryKerberosKey3_reserved3; +static int hf_drsuapi_package_PrimaryKerberosKey3_value; +static int hf_drsuapi_package_PrimaryKerberosKey3_value_len; +static int hf_drsuapi_package_PrimaryKerberosKey3_value_ofs; +static int hf_drsuapi_package_PrimaryKerberosKey4_iteration_count; +static int hf_drsuapi_package_PrimaryKerberosKey4_keytype; +static int hf_drsuapi_package_PrimaryKerberosKey4_reserved1; +static int hf_drsuapi_package_PrimaryKerberosKey4_reserved2; +static int hf_drsuapi_package_PrimaryKerberosKey4_reserved3; +static int hf_drsuapi_package_PrimaryKerberosKey4_value; +static int hf_drsuapi_package_PrimaryKerberosKey4_value_len; +static int hf_drsuapi_package_PrimaryKerberosKey4_value_ofs; +static int hf_drsuapi_package_PrimaryKerberosString_length; +static int hf_drsuapi_package_PrimaryKerberosString_size; +static int hf_drsuapi_package_PrimaryKerberosString_string_ofs; +static int hf_drsuapi_pkb_PrimaryKerberosBlob; +static int hf_drsuapi_sch_supplementalCredentials; +static int hf_drsuapi_supplementalCredentialsBlob___ndr_size; +static int hf_drsuapi_supplementalCredentialsBlob_sub; +static int hf_drsuapi_supplementalCredentialsBlob_sub_; +static int hf_drsuapi_supplementalCredentialsBlob_unknown1; +static int hf_drsuapi_supplementalCredentialsBlob_unknown2; +static int hf_drsuapi_supplementalCredentialsBlob_unknown3; +static int hf_drsuapi_supplementalCredentialsPackage_data; +static int hf_drsuapi_supplementalCredentialsPackage_data_len; +static int hf_drsuapi_supplementalCredentialsPackage_name; +static int hf_drsuapi_supplementalCredentialsPackage_name_len; +static int hf_drsuapi_supplementalCredentialsPackage_reserved; +static int hf_drsuapi_supplementalCredentialsSubBlob_num_packages; +static int hf_drsuapi_supplementalCredentialsSubBlob_packages; +static int hf_drsuapi_supplementalCredentialsSubBlob_prefix; +static int hf_drsuapi_supplementalCredentialsSubBlob_signature; static int hf_drsuapi_werror; static int proto_dcerpc_drsuapi; @@ -979,6 +1234,76 @@ static e_guid_t uuid_dcerpc_drsuapi = { }; static uint16_t ver_dcerpc_drsuapi = 4; +static int drsuapi_dissect_element_lsa_String_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_lsa_String_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_lsa_String_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_lsa_String_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsPackage_name_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *name_len); +static int drsuapi_dissect_element_supplementalCredentialsPackage_data_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *data_len); +static int drsuapi_dissect_element_supplementalCredentialsPackage_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +const value_string drsuapi_supplementalCredentialsSignature_vals[] = { + { SUPPLEMENTAL_CREDENTIALS_SIGNATURE, "SUPPLEMENTAL_CREDENTIALS_SIGNATURE" }, +{ 0, NULL } +}; +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_signature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_num_packages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages); +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_packages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages); +static int drsuapi_dissect_element_supplementalCredentialsSubBlob_packages_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages); +static int drsuapi_dissect_element_supplementalCredentialsBlob_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsBlob___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsBlob_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsBlob_sub(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsBlob_sub_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_supplementalCredentialsBlob_unknown3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_sch_supplementalCredentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosString_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosString_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosString_string_ofs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey3_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len); +static int drsuapi_dissect_element_package_PrimaryKerberosKey3_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_salt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_iteration_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len); +static int drsuapi_dissect_element_package_PrimaryKerberosKey4_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_service_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_older_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_salt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_default_iteration_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosBlob_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *version); +static int drsuapi_dissect_element_package_PrimaryKerberosBlob_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_package_PrimaryKerberosBlob_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t version); +static int drsuapi_dissect_element_pkb_PrimaryKerberosBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static const true_false_string drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_OP_tfs = { "DRSUAPI_DRS_ASYNC_OP is SET", "DRSUAPI_DRS_ASYNC_OP is NOT SET", @@ -1123,6 +1448,12 @@ static const true_false_string drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_SCHEDULE_tfs "DRSUAPI_DRS_UPDATE_SCHEDULE is SET", "DRSUAPI_DRS_UPDATE_SCHEDULE is NOT SET", }; +static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga); +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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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", @@ -1263,6 +1594,18 @@ static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_ "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_00000008_tfs = { + "DRSUAPI_SUPPORTED_EXTENSION_00000008 is SET", + "DRSUAPI_SUPPORTED_EXTENSION_00000008 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); @@ -1289,28 +1632,30 @@ static int drsuapi_dissect_element_DsBindInfo52_supported_extensions_ext(tvbuff_ 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_info24(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_info28(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_info32(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_info48(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_info52(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsBindInfo_Fallback(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, uint64_t *length); -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_, uint8_t *drep _U_, uint64_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsReplicaObjectIdentifier_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); +static int drsuapi_dissect_conformant_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1320,8 +1665,9 @@ static int drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvbuff_t *tvb _U 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaCursorCtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string drsuapi_drsuapi_DsExtendedOperation_vals[] = { { DRSUAPI_EXOP_NONE, "DRSUAPI_EXOP_NONE" }, { DRSUAPI_EXOP_FSMO_REQ_ROLE, "DRSUAPI_EXOP_FSMO_REQ_ROLE" }, @@ -1501,8 +1847,9 @@ const value_string drsuapi_drsuapi_DsAttributeId_vals[] = { 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsPartialAttributeSet_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1538,9 +1885,31 @@ static int drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1548,8 +1917,9 @@ static int drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvbuff_t *tvb _ 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaCursor2CtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1563,16 +1933,12 @@ static int drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvbuff_t *tvb 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsReplicaAttribute_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1602,8 +1968,9 @@ static int drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvb 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaMetaDataCtr_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1638,6 +2005,17 @@ static int drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvbuff_t *tvb 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1660,8 +2038,32 @@ static int drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvbuff_t 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _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_, uint8_t *drep _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_, uint8_t *drep _U_); +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_, uint8_t *drep _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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesCtr9TS_ctr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1672,40 +2074,59 @@ static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_compressed_length(tvb static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); const value_string drsuapi_drsuapi_DsGetNCChangesCompressionType_vals[] = { { DRSUAPI_COMPRESSION_TYPE_MSZIP, "DRSUAPI_COMPRESSION_TYPE_MSZIP" }, - { DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2, "DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2" }, + { DRSUAPI_COMPRESSION_TYPE_XPRESS, "DRSUAPI_COMPRESSION_TYPE_XPRESS" }, { 0, NULL } }; static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCtr2_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesCtr7_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesCtr7_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsGetNCChangesCtr7_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); static int drsuapi_dissect_element_DsGetNCChangesCtr_ctr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -1724,8 +2145,23 @@ static int drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address_(tvbu 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); +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_, uint8_t *drep _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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2113,7 +2549,8 @@ static int drsuapi_dissect_element_DsAddEntryErrorInfo_update_err(tvbuff_t *tvb 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_, uint32_t *dir_err); -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_, uint8_t *drep _U_, uint32_t *dir_err); +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_, uint8_t *drep _U_, uint32_t dir_err); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2131,7 +2568,8 @@ static int drsuapi_dissect_element_DsAddEntryCtr2_objects__(tvbuff_t *tvb _U_, i 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_, uint8_t *drep _U_); 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_, uint8_t *drep _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_, uint8_t *drep _U_, uint32_t *err_ver); -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_, uint8_t *drep _U_, uint32_t *err_ver); +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_, uint8_t *drep _U_, uint32_t err_ver); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2210,12 +2648,14 @@ static int drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvbuff 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaNeighbourCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaCursorCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2225,8 +2665,9 @@ static int drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvbuff_t 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2235,8 +2676,9 @@ static int drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvbuff_t 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string drsuapi_drsuapi_DsReplicaOpType_vals[] = { { DRSUAPI_DS_REPLICA_OP_TYPE_SYNC, "DRSUAPI_DS_REPLICA_OP_TYPE_SYNC" }, { DRSUAPI_DS_REPLICA_OP_TYPE_ADD, "DRSUAPI_DS_REPLICA_OP_TYPE_ADD" }, @@ -2260,8 +2702,9 @@ static int drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvbuff_t *tvb _U_, in 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaOpCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2278,12 +2721,14 @@ static int drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(tvbu 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaCursor2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2291,8 +2736,9 @@ static int drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn(tvbuff_t * 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaCursor3Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2304,8 +2750,9 @@ static int drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(tvbu 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2324,8 +2771,9 @@ static int drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn( 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2335,8 +2783,9 @@ static int drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvbuf 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplicaConnection04Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2348,8 +2797,9 @@ static int drsuapi_dissect_element_DsReplica06_u6(tvbuff_t *tvb _U_, int 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -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_, uint8_t *drep _U_); +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_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); +static int drsuapi_dissect_conformant_DsReplica06Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2409,14 +2859,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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReq_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReplyV1_retVal(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReplyV1_cNgcKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKeyReply_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); @@ -2427,7 +2921,7 @@ static int drsuapi_dissect_element_DsUnbind_bind_handle(tvbuff_t *tvb _U_, int o 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); -static int drsuapi_dissect_element_DsReplicaSync_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); 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_, uint8_t *drep _U_); @@ -2550,678 +3044,5195 @@ 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_hDrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_hDrs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_inVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_ngcReq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_ngcReq_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_pOutVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_pOutVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_ngcReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int drsuapi_dissect_element_ReadNgcKey_ngcReply_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_); + #include + #include + #include + #define KERBEROS_METZE 1 + #include "packet-kerberos.h" 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_, uint8_t *drep _U_, uint3264_t *length _U_) +drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_length, NULL); + /*manual*/ + dcerpc_ptr_stack *ptr = di->ptr_stack; + int start_offset = offset; + uint32_t rid = 0; + offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_sid); + if (ptr == NULL) { + return offset; + } + if (offset > start_offset) { + dissect_ndr_uint32(tvb, start_offset + 24, pinfo, tree, di, drep, -1, &rid); + } + ptr->private_data.val64 = rid; + if (tree == NULL) return offset; +if (0) { + proto_tree_add_debug_text(tree, + "METZE frame:%d drsuapi_dissect_element_DsReplicaObjectIdentifier_sid RID:%d auth_info->session_key=%s", + pinfo->fd->num, rid, + di->auth_session_key != NULL ? + di->auth_session_key->id_str : "NO"); +} 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_, uint3264_t *length) +drsuapi_dissect_element_DsReplicaAttribute_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - if(di->conformant_run){ + /*manual*/ + dcerpc_ptr_stack *ptr = di->ptr_stack; + uint32_t rid = 0; + uint32_t attid = 0; + offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttribute_attid, &attid); + if (ptr == NULL) { + return offset; + } + if (ptr->parent == NULL) { return offset; } - offset = drsuapi_dissect_DsBindInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_info, (uint32_t)*length); + rid = ptr->parent->private_data.val64; + ptr->private_data.val64 = attid; + if (tree == NULL) return offset; +if (0) { + proto_tree_add_debug_text(tree, + "METZE frame:%d drsuapi_dissect_element_DsReplicaAttribute_attid RID:%d ATTID:0x%08X auth_info->session_key=%s", + pinfo->fd->num, + rid, attid, + di->auth_session_key != NULL ? + di->auth_session_key->id_str : "NO"); +} 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); -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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosBlob_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *version) { - ALIGN_TO_5_BYTES; - offset = drsuapi_dissect_DsNameCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_ctr, 0); + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosBlob_version, 0, version); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) { - offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_next,0); + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_num_keys, 0, num_keys); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) { - offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object,0); + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_num_old_keys, 0, num_old_keys); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) { - offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0); - return offset; + return drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys_(tvb, offset, pinfo, tree, di, drep, num_keys); } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) { - offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list,0); + uint32_t i; + for (i=0; i < *num_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr3_keys, 0); + } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) { - offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,0); + return drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys_(tvb, offset, pinfo, tree, di, drep, num_old_keys); +} +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) +{ + uint32_t i; + for (i=0; i < *num_old_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr3_old_keys, 0); + } return offset; } static int -drsuapi_dissect_ReadNgcKeyReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_element_package_PrimaryKerberosKey3_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len) +{ + return drsuapi_dissect_element_package_PrimaryKerberosKey3_value_(tvb, offset, pinfo, tree, di, drep, value_len); +} +static int +drsuapi_dissect_element_package_PrimaryKerberosKey3_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len) { + tvbuff_t *subtvb = tvb_new_subset_length(tvb, offset, *value_len); + offset += dissect_ndr_datablob(subtvb, 0, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_value, 1); + return offset; +} +int +drsuapi_dissect_struct_package_PrimaryKerberosKey3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint32_t value_len = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - uint32_t level; - ALIGN_TO_5_BYTES; + uint32_t keytype; + uint32_t value_ofs; + ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyReply, &item, "drsuapi_ReadNgcKeyReply"); - } - 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_ReadNgcKeyReply_V1(tvb, offset, pinfo, tree, di, drep); - break; + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_drsuapi_package_PrimaryKerberosKey3); + } + offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved2(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved3(tvb, offset, pinfo, tree, di, drep); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_keytype(tvb, offset, pinfo, tree, di, drep); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_keytype, 0, &keytype); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_value_len(tvb, offset, pinfo, tree, di, drep, &value_len); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_value_len, 0, &value_len); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey3_value_ofs(tvb, offset, pinfo, tree, di, drep); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_value_ofs, 0, &value_ofs); + if (value_ofs != 0 && tvb_bytes_exist(tvb, value_ofs, value_len)) { + drsuapi_dissect_element_package_PrimaryKerberosKey3_value(tvb, value_ofs, pinfo, tree, di, drep, &value_len); } proto_item_set_len(item, offset-old_offset); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } return offset; } - - -/* IDL: bitmap { */ -/* IDL: } */ - -int -drsuapi_dissect_bitmap_security_GroupAttrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) { - uint32_t flags; - ALIGN_TO_4_BYTES; - - proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, DREP_ENC_INTEGER(drep)); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); - + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr4_num_keys, 0, num_keys); return offset; } - - -/* IDL: bitmap { */ -/* IDL: DRSUAPI_DRS_ASYNC_OP = 0x00000001 , */ -/* IDL: DRSUAPI_DRS_GETCHG_CHECK = 0x00000002 , */ -/* IDL: DRSUAPI_DRS_ADD_REF = 0x00000004 , */ -/* IDL: DRSUAPI_DRS_SYNC_ALL = 0x00000008 , */ -/* IDL: DRSUAPI_DRS_WRIT_REP = 0x00000010 , */ -/* IDL: DRSUAPI_DRS_INIT_SYNC = 0x00000020 , */ -/* IDL: DRSUAPI_DRS_PER_SYNC = 0x00000040 , */ -/* IDL: DRSUAPI_DRS_MAIL_REP = 0x00000080 , */ -/* IDL: DRSUAPI_DRS_ASYNC_REP = 0x00000100 , */ -/* IDL: DRSUAPI_DRS_TWOWAY_SYNC = 0x00000200 , */ -/* IDL: DRSUAPI_DRS_CRITICAL_ONLY = 0x00000400 , */ -/* IDL: DRSUAPI_DRS_GET_ANC = 0x00000800 , */ -/* IDL: DRSUAPI_DRS_GET_NC_SIZE = 0x00001000 , */ -/* IDL: DRSUAPI_DRS_NONGC_RO_REP = 0x00002000 , */ -/* IDL: DRSUAPI_DRS_SYNC_BYNAME = 0x00004000 , */ -/* IDL: DRSUAPI_DRS_FULL_SYNC_NOW = 0x00008000 , */ -/* IDL: DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS = 0x00010000 , */ -/* IDL: DRSUAPI_DRS_FULL_SYNC_PACKET = 0x00020000 , */ -/* IDL: DRSUAPI_DRS_SYNC_REQUEUE = 0x00040000 , */ -/* IDL: DRSUAPI_DRS_SYNC_URGENT = 0x00080000 , */ -/* IDL: DRSUAPI_DRS_REF_GCSPN = 0x00100000 , */ -/* IDL: DRSUAPI_DRS_NEVER_SYNCED = 0x00200000 , */ -/* IDL: DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00400000 , */ -/* IDL: DRSUAPI_DRS_INIT_SYNC_NOW = 0x00800000 , */ -/* IDL: DRSUAPI_DRS_PREEMPTED = 0x01000000 , */ -/* IDL: DRSUAPI_DRS_SYNC_FORCED = 0x02000000 , */ -/* IDL: DRSUAPI_DRS_DISABLE_AUTO_SYNC = 0x04000000 , */ -/* IDL: DRSUAPI_DRS_DISABLE_PERIODIC_SYNC = 0x08000000 , */ -/* IDL: DRSUAPI_DRS_USE_COMPRESSION = 0x10000000 , */ -/* IDL: DRSUAPI_DRS_NEVER_NOTIFY = 0x20000000 , */ -/* IDL: DRSUAPI_DRS_SYNC_PAS = 0x40000000 , */ -/* IDL: DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP = 0x80000000 , */ -/* IDL: } */ - -int -drsuapi_dissect_bitmap_DrsOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_service_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys) { - proto_item *item; - static int * const drsuapi_drsuapi_DrsOptions_fields[] = { - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_OP, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GETCHG_CHECK, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ADD_REF, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_ALL, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_WRIT_REP, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_INIT_SYNC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_PER_SYNC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_MAIL_REP, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_REP, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_TWOWAY_SYNC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_CRITICAL_ONLY, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_ANC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_NC_SIZE, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NONGC_RO_REP, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_BYNAME, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_NOW, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_PACKET, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_REQUEUE, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_URGENT, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_REF_GCSPN, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NEVER_SYNCED, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_INIT_SYNC_NOW, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_PREEMPTED, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_FORCED, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_DISABLE_AUTO_SYNC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_DISABLE_PERIODIC_SYNC, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_USE_COMPRESSION, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NEVER_NOTIFY, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_PAS, - &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP, - NULL - }; - uint32_t flags; - ALIGN_TO_4_BYTES; - - item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, - ett_drsuapi_drsuapi_DrsOptions, drsuapi_drsuapi_DrsOptions_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)"); - + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr4_num_service_keys, 0, num_service_keys); return offset; } - - -/* IDL: bitmap { */ -/* IDL: DRSUAPI_DRS_GET_TGT = 0x00000001 , */ -/* IDL: } */ - -int -drsuapi_dissect_bitmap_DrsMoreOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) { - proto_item *item; - static int * const drsuapi_drsuapi_DrsMoreOptions_fields[] = { - &hf_drsuapi_drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT, - NULL - }; - uint32_t flags; - ALIGN_TO_4_BYTES; - - item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, - ett_drsuapi_drsuapi_DrsMoreOptions, drsuapi_drsuapi_DrsMoreOptions_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 & (~0x00000001)) { - flags &= (~0x00000001); - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr4_num_old_keys, 0, num_old_keys); + return offset; +} +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_older_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys) +{ + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr4_num_older_keys, 0, num_older_keys); + return offset; +} +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) +{ + return drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys_(tvb, offset, pinfo, tree, di, drep, num_keys); +} +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_keys) +{ + uint32_t i; + for (i=0; i < *num_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr4_keys, 0); } - return offset; } - - -/* IDL: bitmap { */ -/* IDL: DRSUAPI_DRS_UPDATE_FLAGS = 0x00000001 , */ -/* IDL: DRSUAPI_DRS_UPDATE_ADDRESS = 0x00000002 , */ -/* IDL: DRSUAPI_DRS_UPDATE_SCHEDULE = 0x00000004 , */ -/* IDL: } */ - -int -drsuapi_dissect_bitmap_DrsUpdate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys) { - proto_item *item; - static int * const drsuapi_drsuapi_DrsUpdate_fields[] = { - &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_FLAGS, - &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_ADDRESS, - &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_SCHEDULE, - NULL - }; - uint32_t flags; - ALIGN_TO_4_BYTES; - - item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, - ett_drsuapi_drsuapi_DrsUpdate, drsuapi_drsuapi_DrsUpdate_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 & (~0x00000007)) { - flags &= (~0x00000007); - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + return drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys_(tvb, offset, pinfo, tree, di, drep, num_service_keys); +} +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_service_keys) +{ + uint32_t i; + for (i=0; i < *num_service_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr4_service_keys, 0); } - return offset; } - - -/* 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_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) { - 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_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 - }; - uint32_t 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)"); - - return offset; + return drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys_(tvb, offset, pinfo, tree, di, drep, num_old_keys); } - - -/* IDL: bitmap { */ -/* IDL: DRSUAPI_SUPPORTED_EXTENSION_ADAM = 0x00000001 , */ -/* IDL: DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 = 0x00000002 , */ -/* IDL: DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN = 0x00000004 , */ -/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_old_keys) { - 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, - NULL - }; - uint32_t 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 & (~0x00000007)) { - flags &= (~0x00000007); - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + uint32_t i; + for (i=0; i < *num_old_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr4_old_keys, 0); } - return offset; } - - -/* IDL: struct { */ -/* IDL: drsuapi_SupportedExtensions supported_extensions; */ -/* IDL: GUID site_guid; */ -/* IDL: uint32 pid; */ -/* IDL: } */ - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys) { - offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_supported_extensions, 0); - - return offset; + return drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys_(tvb, offset, pinfo, tree, di, drep, num_older_keys); } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_older_keys) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_site_guid, NULL); - + uint32_t i; + for (i=0; i < *num_older_keys; i++) { + offset = drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr4_older_keys, 0); + } return offset; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_package_PrimaryKerberosKey4_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_pid, 0); - + return drsuapi_dissect_element_package_PrimaryKerberosKey4_value_(tvb, offset, pinfo, tree, di, drep, value_len); +} +static int +drsuapi_dissect_element_package_PrimaryKerberosKey4_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *value_len) +{ + tvbuff_t *subtvb = tvb_new_subset_length(tvb, offset, *value_len); + dcerpc_ptr_stack *keytype_ptr = di->ptr_stack; + uint32_t rid = 0; + int keytype = 0; + int keylength = *value_len; + uint8_t keyvalue[KRB_MAX_KEY_LENGTH] = {0,}; + char origin[128] = {0, }; + offset += dissect_ndr_datablob(subtvb, 0, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_value, 1); + if (keytype_ptr == NULL) { + return offset; + } + if (keytype_ptr->parent == NULL) { + return offset; + } + rid = keytype_ptr->parent->private_data.val64; + keytype = keytype_ptr->private_data.val64; + tvb_memcpy(subtvb, keyvalue, 0, MIN(keylength, KRB_MAX_KEY_LENGTH)); + snprintf(origin, sizeof(origin)-1, "RID=%u drsuapi.PrimaryKerberosKey4", rid); + kerberos_inject_longterm_key(pinfo, tree, NULL, subtvb, + keytype, keylength, keyvalue, + origin); return offset; } - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + uint32_t value_len = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - + uint32_t keytype; + uint32_t value_ofs; 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_DsBindInfo24); + tree = proto_item_add_subtree(item, ett_drsuapi_package_PrimaryKerberosKey4); + } + offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved2(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved3(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_iteration_count(tvb, offset, pinfo, tree, di, drep); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_keytype(tvb, offset, pinfo, tree, di, drep); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_keytype, 0, &keytype); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_value_len(tvb, offset, pinfo, tree, di, drep, &value_len); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_value_len, 0, &value_len); + //offset = drsuapi_dissect_element_package_PrimaryKerberosKey4_value_ofs(tvb, offset, pinfo, tree, di, drep); + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_value_ofs, 0, &value_ofs); + if (value_ofs != 0 && tvb_bytes_exist(tvb, value_ofs, value_len)) { + dcerpc_ptr_stack *rid_ptr = di->ptr_stack; + dcerpc_ptr_stack *keytype_ptr = NULL; + if (rid_ptr != NULL) { + keytype_ptr = wmem_new0(pinfo->pool, dcerpc_ptr_stack); + } + if (keytype_ptr != NULL) { + keytype_ptr->parent = rid_ptr; + keytype_ptr->private_data.val64 = keytype; + } + di->ptr_stack = keytype_ptr; + drsuapi_dissect_element_package_PrimaryKerberosKey4_value(tvb, value_ofs, pinfo, tree, di, drep, &value_len); + di->ptr_stack = rid_ptr; } - - offset = drsuapi_dissect_element_DsBindInfo24_supported_extensions(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); - - if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_4_BYTES; } - return offset; } - - -/* IDL: struct { */ -/* IDL: drsuapi_SupportedExtensions supported_extensions; */ -/* IDL: GUID site_guid; */ -/* IDL: uint32 pid; */ -/* IDL: uint32 repl_epoch; */ -/* IDL: } */ - 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_, uint8_t *drep _U_) +drsuapi_dissect_package_PrimaryKerberosBlob(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_supported_extensions, 0); - + uint8_t drep[4] = { 0x10, 0x00, 0x00, 0x00}; /* fake DREP struct */ + static dcerpc_info di = {0, }; /* fake dcerpc_info struct */ + static dcerpc_call_value call_data = { 0, }; + int offset; + /* fake whatever state the dcerpc runtime support needs */ + di.conformant_run=0; + /* we need di->call_data->flags.NDR64 == 0 */ + di.call_data=&call_data; + init_ndr_pointer_list(&di); + di.ptr_stack = parent_di->ptr_stack; + offset = drsuapi_dissect_struct_package_PrimaryKerberosBlob(tvb, 0, pinfo, parent_tree, &di, drep, + hf_drsuapi_pkb_PrimaryKerberosBlob, 0); + free_ndr_pointer_list(&di); return offset; } - -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_, uint8_t *drep _U_) +typedef int (*package_dissector_fn_t)(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_); +static bool +drsuapi_GByteArray_destroy_cb(wmem_allocator_t *allocator _U_, wmem_cb_event_t event _U_, void *user_data _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_site_guid, NULL); - - return offset; + GByteArray *bytes = (GByteArray *)user_data; + g_byte_array_free(bytes, TRUE); + /* unregister this callback */ + return false; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsPackage_name_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *name_len) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_pid, 0); - + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsPackage_name_len, 0, name_len); return offset; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsPackage_data_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *data_len) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_repl_epoch, 0); - + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsPackage_data_len, 0, data_len); return offset; } - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_supplementalCredentialsPackage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_4_BYTES; - + uint16_t name_len = 0; + const char *name = NULL; + uint16_t data_len = 0; + 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_DsBindInfo28); - } - - offset = drsuapi_dissect_element_DsBindInfo28_supported_extensions(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo28_site_guid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo28_pid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo28_repl_epoch(tvb, offset, pinfo, tree, di, drep); - - + tree = proto_item_add_subtree(item, ett_drsuapi_supplementalCredentialsPackage); + } + offset = drsuapi_dissect_element_supplementalCredentialsPackage_name_len(tvb, offset, pinfo, tree, di, drep, &name_len); + offset = drsuapi_dissect_element_supplementalCredentialsPackage_data_len(tvb, offset, pinfo, tree, di, drep, &data_len); + offset = drsuapi_dissect_element_supplementalCredentialsPackage_reserved(tvb, offset, pinfo, tree, di, drep); +if (0) { + #if 0 + offset = drsuapi_dissect_element_supplementalCredentialsPackage_name(tvb, offset, pinfo, tree, di, drep, &name_len); + #endif +} else { + const uint8_t *_name = NULL; + proto_tree_add_item_ret_string(tree, hf_drsuapi_supplementalCredentialsPackage_name, + tvb, offset, name_len, ENC_UTF_16|ENC_LITTLE_ENDIAN, + wmem_packet_scope(), &_name); + name = (const char *)_name; + proto_item_append_text(item, ": %s", name); + offset += name_len; +} +if (0) { + #if 0 + offset = drsuapi_dissect_element_supplementalCredentialsPackage_data(tvb, offset, pinfo, tree, di, drep, &data_len); + #endif +} else { + const uint8_t *_hexdata = NULL; + const char *hexdata = NULL; + tvbuff_t *tvbdata = NULL; + proto_tree_add_item_ret_string(tree, hf_drsuapi_supplementalCredentialsPackage_data, + tvb, offset, data_len, ENC_ASCII, + wmem_packet_scope(), &_hexdata); + hexdata = (const char *)_hexdata; + if (hexdata != NULL) { + GByteArray *bytes = NULL; + /* Convert key to raw bytes */ + bytes = g_byte_array_new(); + if (bytes != NULL) { + gboolean res; + wmem_register_callback(pinfo->pool, drsuapi_GByteArray_destroy_cb, bytes); + res = hex_str_to_bytes(hexdata, bytes, FALSE); + if (res) { + tvbdata = tvb_new_child_real_data(tvb, + bytes->data, + bytes->len, + bytes->len); + } + } + } + if (tvbdata != NULL) { + struct { + const char *name; + package_dissector_fn_t fn; + } packages[] = { + { + .name = "Primary:Kerberos-Newer-Keys", + .fn = drsuapi_dissect_package_PrimaryKerberosBlob, + },{ + .name = "Primary:Kerberos", + .fn = drsuapi_dissect_package_PrimaryKerberosBlob, + },{ + .name = NULL, + } + }; + size_t i = 0; + for (i=0; packages[i].name != NULL; i++) { + int cmp; + cmp = strcmp(packages[i].name, name); + if (cmp == 0) { + break; + } + } + add_new_data_source(pinfo, tvbdata, name); + proto_tree_add_text_internal(tree, tvbdata, 0, -1, "%s", name); + if (packages[i].fn != NULL) { + packages[i].fn(tvbdata, pinfo, tree, di); + } + } + offset += data_len; +} proto_item_set_len(item, offset-old_offset); - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; + ALIGN_TO_2_BYTES; } - - return offset; -} - - -/* 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: } */ - -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_, uint8_t *drep _U_) -{ - 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_DsBindInfo32_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_site_guid, NULL); - + offset += 2; //PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsSubBlob_prefix, 0); return offset; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsSubBlob_num_packages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_pid, 0); - + offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsSubBlob_num_packages, 0, num_packages); return offset; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsSubBlob_packages_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_repl_epoch, 0); - + uint16_t i; + for (i=0; i<*num_packages; i++) { + offset = drsuapi_dissect_struct_supplementalCredentialsPackage(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_supplementalCredentialsSubBlob_packages,0); + } return offset; } - 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_, uint8_t *drep _U_) +drsuapi_dissect_element_supplementalCredentialsSubBlob_packages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_packages) { - offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions_ext, 0); - + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_packages_(tvb,offset,pinfo,tree,di,drep,num_packages); return offset; } - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_supplementalCredentialsSubBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_4_BYTES; - + uint16_t num_packages; + unsigned remaining; + ALIGN_TO_3_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_DsBindInfo32); + tree = proto_item_add_subtree(item, ett_drsuapi_supplementalCredentialsSubBlob); + } + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_signature(tvb, offset, pinfo, tree, di, drep); + remaining = tvb_reported_length_remaining(tvb, offset); + if (remaining != 0) { + /* + * These are optional + */ + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_num_packages(tvb, offset, pinfo, tree, di, drep, &num_packages); + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_packages(tvb, offset, pinfo, tree, di, drep, &num_packages); } - - offset = drsuapi_dissect_element_DsBindInfo32_supported_extensions(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo32_site_guid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo32_pid(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_4_BYTES; + ALIGN_TO_3_BYTES; } - return offset; } - - -/* IDL: struct { */ +static int +drsuapi_dissect_element_supplementalCredentialsBlob_sub(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + int conformant = di->conformant_run; + tvbuff_t *subtvb; + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + dcerpc_ptr_stack *ndr_size_ptr = di->ptr_stack; + uint32_t size = 0; + if (ndr_size_ptr != NULL) { + size = ndr_size_ptr->private_data.val64; + di->ptr_stack = ndr_size_ptr->parent; + } + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + drsuapi_dissect_element_supplementalCredentialsBlob_sub_(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + di->ptr_stack = ndr_size_ptr; + } + return offset; +} +static int +drsuapi_dissect_element_supplementalCredentialsBlob___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + dcerpc_ptr_stack *ndr_size_ptr = di->ptr_stack; + uint32_t ndr_size = 0; + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsBlob___ndr_size, 0, &ndr_size); + if (ndr_size_ptr != NULL) { + ndr_size_ptr->private_data.val64 = ndr_size; + } + return offset; +} +int +drsuapi_dissect_struct_supplementalCredentialsBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + /*manual*/ + dcerpc_ptr_stack *saved_ptr = di->ptr_stack; + dcerpc_ptr_stack *ndr_size_ptr = NULL; + 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_supplementalCredentialsBlob); + } + ndr_size_ptr = wmem_new0(pinfo->pool, dcerpc_ptr_stack); + if (ndr_size_ptr != NULL) { + ndr_size_ptr->parent = saved_ptr; + } + di->ptr_stack = ndr_size_ptr; + offset = drsuapi_dissect_element_supplementalCredentialsBlob_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_supplementalCredentialsBlob___ndr_size(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_supplementalCredentialsBlob_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_supplementalCredentialsBlob_sub(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_supplementalCredentialsBlob_unknown3(tvb, offset, pinfo, tree, di, drep); + di->ptr_stack = saved_ptr; + 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_supplementalCredentials(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_) +{ + uint8_t drep[4] = { 0x10, 0x00, 0x00, 0x00}; /* fake DREP struct */ + static dcerpc_info di = {0, }; /* fake dcerpc_info struct */ + static dcerpc_call_value call_data = { 0, }; + int offset; + /* fake whatever state the dcerpc runtime support needs */ + di.conformant_run=0; + /* we need di->call_data->flags.NDR64 == 0 */ + di.call_data=&call_data; + init_ndr_pointer_list(&di); + di.ptr_stack = parent_di->ptr_stack; + offset = drsuapi_dissect_struct_supplementalCredentialsBlob(tvb, 0, pinfo, parent_tree, &di, drep, + hf_drsuapi_sch_supplementalCredentials, 0); + free_ndr_pointer_list(&di); + return offset; +} +static int +drsuapi_dissect_unicodePwd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_) +{ + int offset = 0; + dcerpc_ptr_stack *ptr = parent_di->ptr_stack; + uint32_t rid = 0; + int keytype = 23; + int keylength = 16; + tvbuff_t *keytvb = tvb_new_subset_length(tvb, offset, keylength); + uint8_t keyvalue[KRB_MAX_KEY_LENGTH] = {0,}; + char origin[128] = {0, }; + if (ptr != NULL) { + rid = ptr->private_data.val64; + } + tvb_memcpy(keytvb, keyvalue, 0, MIN(keylength, KRB_MAX_KEY_LENGTH)); + snprintf(origin, sizeof(origin)-1, "RID=%u drsuapi.unicodePwd", rid); + kerberos_inject_longterm_key(pinfo, parent_tree, NULL, keytvb, + keytype, keylength, keyvalue, + origin); + offset += 16; + return offset; +} +static int +drsuapi_dissect_ntPwdHistory(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_) +{ + dcerpc_ptr_stack *ptr = parent_di->ptr_stack; + uint32_t rid = 0; + unsigned num_hashes = tvb_reported_length(tvb)/16; + unsigned idx; + int offset = 0; + if (ptr != NULL) { + rid = ptr->private_data.val64; + } + for (idx = 0; idx < num_hashes; idx++) { + int keytype = 23; + int keylength = 16; + tvbuff_t *keytvb = tvb_new_subset_length(tvb, offset, keylength); + uint8_t keyvalue[KRB_MAX_KEY_LENGTH] = {0,}; + char origin[128] = {0, }; + tvb_memcpy(keytvb, keyvalue, 0, MIN(keylength, KRB_MAX_KEY_LENGTH)); + snprintf(origin, sizeof(origin)-1, "RID=%u drsuapi.ntPwdHistory[%u]", rid, idx); + kerberos_inject_longterm_key(pinfo, parent_tree, NULL, keytvb, + keytype, keylength, keyvalue, + origin); + offset += 16; + } + return offset; +} +typedef int (*attr_dissector_fn_t)(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* parent_di _U_); +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_, uint8_t *drep _U_) +{ + /*manual*/ + dcerpc_ptr_stack *ptr = di->ptr_stack; + uint32_t rid = 0; + uint32_t attid = 0; + int start_offset = offset; + int length; + uint8_t _confounder[16] = { 0, }; + uint8_t *confounder; + uint8_t decryption_key[HASH_MD5_LENGTH] = { 0, }; + gcry_cipher_hd_t rc4_handle = NULL; + gcry_buffer_t iov[2] = { {0, },}; + gcry_error_t err; + uint8_t *buf = NULL; + int buf_len; + uint8_t *payload_buf = NULL; + int payload_len = 0; + tvbuff_t *payload_tvb = NULL; + gboolean rid_crypt = FALSE; + const char *attr_name = NULL; + attr_dissector_fn_t attr_dissector_fn = NULL; + char source_name[64] = { 0,}; + offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValue_blob, 0); + if (ptr == NULL) { + return offset; + } + if (ptr->parent == NULL) { + return offset; + } +// TODO check dissect_ndr_lm_nt_hash_cb... + rid = ptr->parent->private_data.val64; + attid = ptr->private_data.val64; + switch (attid) { + case DRSUAPI_ATTID_dBCSPwd: + attr_name = "dBCSPwd"; + rid_crypt = TRUE; + break; + case DRSUAPI_ATTID_unicodePwd: + attr_name = "unicodePwd"; + attr_dissector_fn = drsuapi_dissect_unicodePwd; + rid_crypt = TRUE; + break; + case DRSUAPI_ATTID_ntPwdHistory: + attr_name = "ntPwdHistory"; + attr_dissector_fn = drsuapi_dissect_ntPwdHistory; + rid_crypt = TRUE; + break; + case DRSUAPI_ATTID_lmPwdHistory: + attr_name = "lmPwdHistory"; + rid_crypt = TRUE; + break; + case DRSUAPI_ATTID_supplementalCredentials: + attr_name = "supplementalCredentials"; + attr_dissector_fn = drsuapi_dissect_supplementalCredentials; + break; + case DRSUAPI_ATTID_priorValue: + attr_name = "priorValue"; + break; + case DRSUAPI_ATTID_currentValue: + attr_name = "currentValue"; + break; + case DRSUAPI_ATTID_trustAuthOutgoing: + attr_name = "trustAuthOutgoing"; + break; + case DRSUAPI_ATTID_trustAuthIncoming: + attr_name = "trustAuthIncoming"; + break; + case DRSUAPI_ATTID_initialAuthOutgoing: + attr_name = "initialAuthOutgoing"; + break; + case DRSUAPI_ATTID_initialAuthIncoming: + attr_name = "initialAuthIncoming"; + break; + default: + return offset; + } + length = offset - start_offset; + if (length < 24) { + return offset; + } + start_offset += 4; + length -= 4; +if (0) { + proto_tree_add_text_internal(tree, tvb, start_offset, length, + "METZE rid_crypt:%s RID:%d ATTID:0x%08X ATTR[%s] length=%d session_key=%s", + rid_crypt ? "YES" : "NO", + rid, attid, attr_name, + length, + di->auth_session_key != NULL ? + di->auth_session_key->id_str : "NO"); +} + if (di->auth_session_key == NULL) { + return offset; + } + if (!tvb_bytes_exist(tvb, start_offset, length)) { + return offset; + } + confounder = tvb_memcpy(tvb, _confounder, start_offset, 16); + buf_len = length - 16; + buf = tvb_memdup(pinfo->pool, tvb, start_offset + 16, buf_len); + if (buf == NULL) { + return offset; + } + iov[0].len = di->auth_session_key->keylength; + iov[0].data = di->auth_session_key->keyvalue; + iov[1].len = 16; + iov[1].data = confounder; + err = gcry_md_hash_buffers(GCRY_MD_MD5, 0, decryption_key, iov, 2); + if (err != 0) { + ws_warning("GCRY: gcry_md_hash_buffers(GCRY_MD_MD5) - %s/%s\n", gcry_strsource(err), gcry_strerror(err)); + return offset; + } + err = gcry_cipher_open(&rc4_handle, GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM, 0); + if (err != 0) { + ws_warning("GCRY: gcry_cipher_open(GCRY_CIPHER_ARCFOUR) - %s/%s\n", gcry_strsource(err), gcry_strerror(err)); + return offset; + } + err = gcry_cipher_setkey(rc4_handle, decryption_key, HASH_MD5_LENGTH); + if (err != 0) { + ws_warning("GCRY: gcry_cipher_setkey(GCRY_CIPHER_ARCFOUR) - %s/%s\n", gcry_strsource(err), gcry_strerror(err)); + gcry_cipher_close(rc4_handle); + return offset; + } + err = gcry_cipher_decrypt(rc4_handle, buf, buf_len, NULL, 0); + if (err != 0) { + ws_warning("GCRY: gcry_cipher_decrypt(GCRY_CIPHER_ARCFOUR) - %s/%s\n", gcry_strsource(err), gcry_strerror(err)); + gcry_cipher_close(rc4_handle); + return offset; + } + gcry_cipher_close(rc4_handle); + payload_buf = buf + 4; + payload_len = buf_len - 4; + if (rid_crypt && rid != 0) { + uint8_t rk[14]; + uint8_t ri = 0; + uint8_t *hb = payload_buf; + uint32_t hl = payload_len; + uint32_t hi; + /* + * We have a payload contains one or more + * NT Hashes (16 bytes each). + */ + if ((hl % 16) != 0) { + return offset; + } + /* + * We build a 112 bit key based on the RID + * + * With that we need to decrypt each NT Hash (16 byte) + * + * DES is based on 8 byte blocks, which mean + * we can use the first 7 bytes (56Bit) of the key to + * decrypt the first 8 bytes of the NT Hash and + * the last 7 bytes (also 56Bit) of the key to + * decrypt the 2nd 8 bytes of the NT Hash. + */ + rk[0] = rk[4] = rk[8] = rk[12] = (uint8_t)(rid & 0xFF); + rk[1] = rk[5] = rk[9] = rk[13] = (uint8_t)((rid >> 8) & 0xFF); + rk[2] = rk[6] = rk[10] = (uint8_t)((rid >> 16) & 0xFF); + rk[3] = rk[7] = rk[11] = (uint8_t)((rid >> 24) & 0xFF); + /* loop in 8 byte steps and toggle the key index between 0 and 7 */ + for (hi=0, ri = 0; hi < hl; hi += 8, ri = ri == 0 ? 7 : 0) { + uint8_t *h64 = &hb[hi]; + uint8_t *rk56 = &rk[ri]; + uint8_t tmp64[8]; + memcpy(tmp64, h64, 8); + decrypt_des_ecb(h64, tmp64, rk56); + } + } + payload_tvb = tvb_new_child_real_data(tvb, payload_buf, payload_len, payload_len); + snprintf(source_name, sizeof(source_name)-1, "DRSUAPI Decrypted %s RID=%u", attr_name, rid); + add_new_data_source(pinfo, payload_tvb, source_name); + proto_tree_add_text_internal(tree, payload_tvb, 0, payload_len, "%s", source_name); + if (attr_dissector_fn == NULL) { + return offset; + } + di->ptr_stack = ptr->parent; + attr_dissector_fn(payload_tvb, pinfo, tree, di); + di->ptr_stack = ptr; + return offset; +} +int +drsuapi_dissect_struct_DsReplicaAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + /*manual*/ + dcerpc_ptr_stack *rid_ptr = di->ptr_stack; + 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_DsReplicaAttribute); + } + if (rid_ptr != NULL) { + dcerpc_ptr_stack *attid_ptr = wmem_new0(pinfo->pool, dcerpc_ptr_stack); + if (attid_ptr != NULL) { + attid_ptr->parent = rid_ptr; + } + di->ptr_stack = attid_ptr; + } + offset = drsuapi_dissect_element_DsReplicaAttribute_attid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttribute_value_ctr(tvb, offset, pinfo, tree, di, drep); + di->ptr_stack = rid_ptr; + proto_item_set_len(item, offset-old_offset); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; +} +int +drsuapi_dissect_struct_DsReplicaObject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + /*manual*/ + dcerpc_ptr_stack *saved_ptr = di->ptr_stack; + dcerpc_ptr_stack *rid_ptr = NULL; + 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_DsReplicaObject); + } + rid_ptr = wmem_new0(pinfo->pool, dcerpc_ptr_stack); + di->ptr_stack = rid_ptr; + offset = drsuapi_dissect_element_DsReplicaObject_identifier(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObject_flags(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObject_attribute_ctr(tvb, offset, pinfo, tree, di, drep); + di->ptr_stack = saved_ptr; + 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_DsReplicaObjectListItem_next_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItem_next_object,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + proto_tree *next_object_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_DsReplicaObjectListItem); + next_object_tree = proto_tree_get_parent_tree(parent_tree); + } + offset = drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvb, offset, pinfo, next_object_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_5_BYTES; + } + return offset; +} +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_next_object,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + proto_tree *next_object_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); + next_object_tree = proto_tree_get_parent_tree(parent_tree); + } + offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object(tvb, offset, pinfo, next_object_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; +} +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_next,0); + return offset; +} +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsaAddressListItem_V1_next,0); + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_next,0); + return offset; +} +static int +drsuapi_dissect_element_lsa_String_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, uint8_t *drep _U_) +{ + char *data; + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_String_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + return offset; +} +static int +drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + proto_tree *parent_tree = NULL; + char *data = NULL; + unsigned parent_level = 0; + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, + sizeof(uint16_t), hf_DsReplicaObjectIdentifier_dn, + FALSE, nga, &data); + if (tree == NULL) { + return offset; + } + parent_tree = tree; + for (parent_level = 1, parent_tree = tree; + parent_tree != NULL && parent_level < 10; + parent_level++, + parent_tree = proto_tree_get_parent_tree(parent_tree)) + { + proto_item *parent_item = proto_tree_get_parent(parent_tree); + field_info *fi = NULL; + if (parent_item == NULL) { + break; + } + fi = PITEM_FINFO(parent_item); + if (fi == NULL) { + break; + } + if (parent_level > 3) { + } + proto_item_append_text(parent_tree, "[%u][%s]: %s", parent_level, fi->hfinfo->name, data); + if (parent_level > 4) { + break; + } + } + 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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t 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; +} +static int +drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ +/* + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb = NULL; + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1_(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } +*/ + return offset; +} +static int +drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + uint8_t ddrep[4] = { 0x10, 0x00, 0x00, 0x00}; + dcerpc_call_value call_data = { .flags = 0, }; + dcerpc_info ddi = { .call_data = &call_data, }; + uint64_t size; + tvbuff_t *subtvb = NULL; + int orig_offset = offset; + offset = dissect_krb5_PAC_NDRHEADERBLOB(tree, tvb, offset, &ddrep[0]); + size = tvb_get_letoh64(tvb, orig_offset+8); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + offset += (int)size; + init_ndr_pointer_list(&ddi); + dissect_ndr_pointer(subtvb, 0, pinfo, tree, &ddi, ddrep, + drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6_, + NDR_POINTER_REF, + "Ctr6", -1); + free_ndr_pointer_list(&ddi); + return offset; +} +static int +drsuapi_dissect_element_DsGetNCChangesCtr9TS_ctr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ +/* + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + drsuapi_dissect_element_DsGetNCChangesCtr9TS_ctr9_(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } +*/ + return offset; +} +static int +drsuapi_dissect_DsGetNCChangesCompressedCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +static int +drsuapi_dissect_element_DsGetNCChangesCtr7_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +{ + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_level, 0, level); + return offset; +} +static int +drsuapi_dissect_element_DsGetNCChangesCtr7_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *type) +{ + offset = drsuapi_dissect_enum_DsGetNCChangesCompressionType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_type, type); + return offset; +} +static int +drsuapi_dissect_element_DsGetNCChangesCtr7_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level _U_) +{ + offset = drsuapi_dissect_DsGetNCChangesCompressedCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_ctr, level); + return offset; +} +int +drsuapi_dissect_struct_DsGetNCChangesCtr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint32_t level = 0; + uint16_t type = 0; + uint32_t ctr_level = 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_DsGetNCChangesCtr7); + } + offset = drsuapi_dissect_element_DsGetNCChangesCtr7_level(tvb, offset, pinfo, tree, di, drep, &level); + offset = drsuapi_dissect_element_DsGetNCChangesCtr7_type(tvb, offset, pinfo, tree, di, drep, &type); + ctr_level = (level & 0xFFFF) | (((uint32_t)type)<<16); + offset = drsuapi_dissect_element_DsGetNCChangesCtr7_ctr(tvb, offset, pinfo, tree, di, drep, ctr_level); + proto_item_set_len(item, offset-old_offset); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; +} +static tvbuff_t * +drsuapi_decompress_DsGetNCChangesXPRESS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + tvbuff_t *completetvb = NULL; + unsigned orig_length = tvb_reported_length_remaining(tvb, offset); + unsigned remaining_length = orig_length; + unsigned chunk_idx = 0; + completetvb = tvb_new_composite(); + if (completetvb == NULL) { + return NULL; + } + while (remaining_length > 0) { + tvbuff_t *decomptvb = NULL; + uint32_t decomplen; + uint32_t complen; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, -1, &decomplen); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, -1, &complen); + decomptvb = tvb_uncompress_lz77(tvb, offset, complen); + if (decomptvb == NULL) { + tvb_free_chain(completetvb); + return NULL; + } + offset += complen; + tvb_composite_append(completetvb, decomptvb); + chunk_idx += 1; + remaining_length = tvb_reported_length_remaining(tvb, offset); + } + tvb_composite_finalize(completetvb); + proto_tree_add_text_internal(tree, completetvb, 0, tvb_reported_length(completetvb), + "DRSUAPI LZ77 decompressed=%u", + tvb_reported_length(completetvb)); + add_new_data_source(pinfo, completetvb, "DRSUAPI LZ77 decompressed"); + return completetvb; +} +static void +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + tvbuff_t *decomptvb = NULL; + decomptvb = drsuapi_decompress_DsGetNCChangesXPRESS(tvb, offset, pinfo, tree, di, drep); + if (decomptvb == NULL) { + return; + } + drsuapi_dissect_struct_DsGetNCChangesCtr6TS(decomptvb,0,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts,0); +} + + +/* IDL: struct { */ +/* IDL: [value(2*strlen_m(string))] uint16 length; */ +/* IDL: [value(2*strlen_m(string))] uint16 size; */ +/* IDL: [charset(UTF16)] [length_is(length/2)] [size_is(size/2)] [unique(1)] uint16 *string; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_lsa_String_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_lsa_String_length, 0); + + return offset; +} + +static int +drsuapi_dissect_element_lsa_String_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_lsa_String_size, 0); + + return offset; +} + +static int +drsuapi_dissect_element_lsa_String_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_lsa_String_string_, NDR_POINTER_UNIQUE, "Pointer to String (uint16)",hf_drsuapi_lsa_String_string); + + return offset; +} + +int +drsuapi_dissect_struct_lsa_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_lsa_String); + } + + offset = drsuapi_dissect_element_lsa_String_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_lsa_String_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_lsa_String_string(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(2*strlen_m(name))] uint16 name_len; */ +/* IDL: [value(strlen(data))] uint16 data_len; */ +/* IDL: uint16 reserved; */ +/* IDL: [charset(UTF16)] uint8 name[name_len]; */ +/* IDL: [charset(DOS)] uint8 data[data_len]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_supplementalCredentialsPackage_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsPackage_reserved, 0); + + return offset; +} + + +/* IDL: enum { */ +/* IDL: SUPPLEMENTAL_CREDENTIALS_SIGNATURE=0x0050, */ +/* IDL: } */ + +int +drsuapi_dissect_enum_supplementalCredentialsSignature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } + return offset; +} + + +/* IDL: struct { */ +/* IDL: [charset(UTF16)] [value(SUPPLEMENTAL_CREDENTIALS_PREFIX)] uint16 prefix[0x30]; */ +/* IDL: [value(SUPPLEMENTAL_CREDENTIALS_SIGNATURE)] supplementalCredentialsSignature signature; */ +/* IDL: uint16 num_packages; */ +/* IDL: supplementalCredentialsPackage packages[num_packages]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + int i; + for (i = 0; i < 0x30; i++) + offset = drsuapi_dissect_element_supplementalCredentialsSubBlob_prefix_(tvb, offset, pinfo, tree, di, drep); + + return offset; +} + +static int +drsuapi_dissect_element_supplementalCredentialsSubBlob_signature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_supplementalCredentialsSignature(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsSubBlob_signature, 0); + + return offset; +} + + +/* IDL: struct { */ +/* IDL: [value(0)] uint32 unknown1; */ +/* IDL: [value(ndr_size_supplementalCredentialsSubBlob(&sub,ndr->flags))] uint32 __ndr_size; */ +/* IDL: [value(0)] uint32 unknown2; */ +/* IDL: [subcontext(4)] [subcontext_size(__ndr_size)] supplementalCredentialsSubBlob sub; */ +/* IDL: [value(0)] uint8 unknown3; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_supplementalCredentialsBlob_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsBlob_unknown1, 0); + + return offset; +} + +static int +drsuapi_dissect_element_supplementalCredentialsBlob_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsBlob_unknown2, 0); + + return offset; +} + +static int +drsuapi_dissect_element_supplementalCredentialsBlob_sub_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_supplementalCredentialsSubBlob(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_supplementalCredentialsBlob_sub,0); + + return offset; +} + +static int +drsuapi_dissect_element_supplementalCredentialsBlob_unknown3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_supplementalCredentialsBlob_unknown3, 0); + + return offset; +} + + +/* IDL: struct { */ +/* IDL: supplementalCredentialsBlob supplementalCredentials; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_sch_supplementalCredentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_supplementalCredentialsBlob(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_sch_supplementalCredentials,0); + + return offset; +} + +int +drsuapi_dissect_struct_sch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_sch); + } + + offset = drsuapi_dissect_element_sch_supplementalCredentials(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(2*strlen_m(string))] uint16 length; */ +/* IDL: [value(2*strlen_m(string))] uint16 size; */ +/* IDL: uint32 string_ofs; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosString_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosString_length, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosString_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosString_size, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosString_string_ofs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosString_string_ofs, 0); + + return offset; +} + +int +drsuapi_dissect_struct_package_PrimaryKerberosString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_package_PrimaryKerberosString); + } + + offset = drsuapi_dissect_element_package_PrimaryKerberosString_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosString_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosString_string_ofs(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(0)] uint16 reserved1; */ +/* IDL: [value(0)] uint16 reserved2; */ +/* IDL: [value(0)] uint32 reserved3; */ +/* IDL: uint32 keytype; */ +/* IDL: uint32 value_len; */ +/* IDL: uint32 value_ofs; */ +/* IDL: uint8 value[value_len]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_reserved1, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_reserved2, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey3_reserved3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey3_reserved3, 0); + + return offset; +} + + +/* IDL: struct { */ +/* IDL: uint16 num_keys; */ +/* IDL: uint16 num_old_keys; */ +/* IDL: package_PrimaryKerberosString salt; */ +/* IDL: package_PrimaryKerberosKey3 keys[num_keys]; */ +/* IDL: package_PrimaryKerberosKey3 old_keys[num_old_keys]; */ +/* IDL: [value(0)] uint32 padding1; */ +/* IDL: [value(0)] uint32 padding2; */ +/* IDL: [value(0)] uint32 padding3; */ +/* IDL: [value(0)] uint32 padding4; */ +/* IDL: [value(0)] uint32 padding5; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_salt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_package_PrimaryKerberosString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr3_salt,0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_padding1, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_padding2, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_padding3, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_padding4, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr3_padding5, 0); + + return offset; +} + +int +drsuapi_dissect_struct_package_PrimaryKerberosCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint16_t num_keys = 0; + uint16_t num_old_keys = 0; + 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_package_PrimaryKerberosCtr3); + } + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_keys(tvb, offset, pinfo, tree, di, drep, &num_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_num_old_keys(tvb, offset, pinfo, tree, di, drep, &num_old_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_salt(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_keys(tvb, offset, pinfo, tree, di, drep, &num_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_old_keys(tvb, offset, pinfo, tree, di, drep, &num_old_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding1(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding2(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding3(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding4(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr3_padding5(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(0)] uint16 reserved1; */ +/* IDL: [value(0)] uint16 reserved2; */ +/* IDL: [value(0)] uint32 reserved3; */ +/* IDL: uint32 iteration_count; */ +/* IDL: uint32 keytype; */ +/* IDL: uint32 value_len; */ +/* IDL: uint32 value_ofs; */ +/* IDL: uint8 value[value_len]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_reserved1, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_reserved2, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey4_reserved3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_reserved3, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosKey4_iteration_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosKey4_iteration_count, 0); + + return offset; +} + + +/* IDL: struct { */ +/* IDL: uint16 num_keys; */ +/* IDL: [value(0)] uint16 num_service_keys; */ +/* IDL: uint16 num_old_keys; */ +/* IDL: uint16 num_older_keys; */ +/* IDL: package_PrimaryKerberosString salt; */ +/* IDL: uint32 default_iteration_count; */ +/* IDL: package_PrimaryKerberosKey4 keys[num_keys]; */ +/* IDL: package_PrimaryKerberosKey4 service_keys[num_service_keys]; */ +/* IDL: package_PrimaryKerberosKey4 old_keys[num_old_keys]; */ +/* IDL: package_PrimaryKerberosKey4 older_keys[num_older_keys]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_salt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_package_PrimaryKerberosString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr4_salt,0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr4_default_iteration_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosCtr4_default_iteration_count, 0); + + return offset; +} + +int +drsuapi_dissect_struct_package_PrimaryKerberosCtr4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint16_t num_keys = 0; + uint16_t num_service_keys = 0; + uint16_t num_old_keys = 0; + uint16_t num_older_keys = 0; + 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_package_PrimaryKerberosCtr4); + } + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_keys(tvb, offset, pinfo, tree, di, drep, &num_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_service_keys(tvb, offset, pinfo, tree, di, drep, &num_service_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_old_keys(tvb, offset, pinfo, tree, di, drep, &num_old_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_num_older_keys(tvb, offset, pinfo, tree, di, drep, &num_older_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_salt(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_default_iteration_count(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_keys(tvb, offset, pinfo, tree, di, drep, &num_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_service_keys(tvb, offset, pinfo, tree, di, drep, &num_service_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_old_keys(tvb, offset, pinfo, tree, di, drep, &num_old_keys); + + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr4_older_keys(tvb, offset, pinfo, tree, di, drep, &num_older_keys); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + + +/* IDL: [nodiscriminant(1)] union { */ +/* IDL: [case(3)] [case(3)] package_PrimaryKerberosCtr3 ctr3; */ +/* IDL: [case(4)] [case(4)] package_PrimaryKerberosCtr4 ctr4; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_package_PrimaryKerberosCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr_ctr3,0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_package_PrimaryKerberosCtr4(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_package_PrimaryKerberosCtr_ctr4,0); + + return offset; +} + +static int +drsuapi_dissect_package_PrimaryKerberosCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level = param; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_package_PrimaryKerberosCtr, &item, "package_PrimaryKerberosCtr"); + } + + UNION_ALIGN_TO_4_BYTES; + + switch(level) { + case 3: + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr3(tvb, offset, pinfo, tree, di, drep); + break; + + case 4: + offset = drsuapi_dissect_element_package_PrimaryKerberosCtr_ctr4(tvb, offset, pinfo, tree, di, drep); + break; + } + proto_item_set_len(item, offset-old_offset); + + + return offset; +} + +/* IDL: struct { */ +/* IDL: uint16 version; */ +/* IDL: [value(0)] uint16 flags; */ +/* IDL: [switch_is(version)] package_PrimaryKerberosCtr ctr; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_package_PrimaryKerberosBlob_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosBlob_flags, 0); + + return offset; +} + +static int +drsuapi_dissect_element_package_PrimaryKerberosBlob_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t version) +{ + offset = drsuapi_dissect_package_PrimaryKerberosCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_package_PrimaryKerberosBlob_ctr, version); + + return offset; +} + +int +drsuapi_dissect_struct_package_PrimaryKerberosBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint16_t version = 0; + 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_package_PrimaryKerberosBlob); + } + + offset = drsuapi_dissect_element_package_PrimaryKerberosBlob_version(tvb, offset, pinfo, tree, di, drep, &version); + + offset = drsuapi_dissect_element_package_PrimaryKerberosBlob_flags(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_package_PrimaryKerberosBlob_ctr(tvb, offset, pinfo, tree, di, drep, version); + + + 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: package_PrimaryKerberosBlob PrimaryKerberosBlob; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_pkb_PrimaryKerberosBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_package_PrimaryKerberosBlob(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_pkb_PrimaryKerberosBlob,0); + + return offset; +} + +int +drsuapi_dissect_struct_pkb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_pkb); + } + + offset = drsuapi_dissect_element_pkb_PrimaryKerberosBlob(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: bitmap { */ +/* IDL: } */ + +int +drsuapi_dissect_bitmap_security_GroupAttrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + uint32_t flags; + ALIGN_TO_4_BYTES; + + proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, DREP_ENC_INTEGER(drep)); + + offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); + + return offset; +} + + +/* IDL: bitmap { */ +/* IDL: DRSUAPI_DRS_ASYNC_OP = 0x00000001 , */ +/* IDL: DRSUAPI_DRS_GETCHG_CHECK = 0x00000002 , */ +/* IDL: DRSUAPI_DRS_ADD_REF = 0x00000004 , */ +/* IDL: DRSUAPI_DRS_SYNC_ALL = 0x00000008 , */ +/* IDL: DRSUAPI_DRS_WRIT_REP = 0x00000010 , */ +/* IDL: DRSUAPI_DRS_INIT_SYNC = 0x00000020 , */ +/* IDL: DRSUAPI_DRS_PER_SYNC = 0x00000040 , */ +/* IDL: DRSUAPI_DRS_MAIL_REP = 0x00000080 , */ +/* IDL: DRSUAPI_DRS_ASYNC_REP = 0x00000100 , */ +/* IDL: DRSUAPI_DRS_TWOWAY_SYNC = 0x00000200 , */ +/* IDL: DRSUAPI_DRS_CRITICAL_ONLY = 0x00000400 , */ +/* IDL: DRSUAPI_DRS_GET_ANC = 0x00000800 , */ +/* IDL: DRSUAPI_DRS_GET_NC_SIZE = 0x00001000 , */ +/* IDL: DRSUAPI_DRS_NONGC_RO_REP = 0x00002000 , */ +/* IDL: DRSUAPI_DRS_SYNC_BYNAME = 0x00004000 , */ +/* IDL: DRSUAPI_DRS_FULL_SYNC_NOW = 0x00008000 , */ +/* IDL: DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS = 0x00010000 , */ +/* IDL: DRSUAPI_DRS_FULL_SYNC_PACKET = 0x00020000 , */ +/* IDL: DRSUAPI_DRS_SYNC_REQUEUE = 0x00040000 , */ +/* IDL: DRSUAPI_DRS_SYNC_URGENT = 0x00080000 , */ +/* IDL: DRSUAPI_DRS_REF_GCSPN = 0x00100000 , */ +/* IDL: DRSUAPI_DRS_NEVER_SYNCED = 0x00200000 , */ +/* IDL: DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00400000 , */ +/* IDL: DRSUAPI_DRS_INIT_SYNC_NOW = 0x00800000 , */ +/* IDL: DRSUAPI_DRS_PREEMPTED = 0x01000000 , */ +/* IDL: DRSUAPI_DRS_SYNC_FORCED = 0x02000000 , */ +/* IDL: DRSUAPI_DRS_DISABLE_AUTO_SYNC = 0x04000000 , */ +/* IDL: DRSUAPI_DRS_DISABLE_PERIODIC_SYNC = 0x08000000 , */ +/* IDL: DRSUAPI_DRS_USE_COMPRESSION = 0x10000000 , */ +/* IDL: DRSUAPI_DRS_NEVER_NOTIFY = 0x20000000 , */ +/* IDL: DRSUAPI_DRS_SYNC_PAS = 0x40000000 , */ +/* IDL: DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP = 0x80000000 , */ +/* IDL: } */ + +int +drsuapi_dissect_bitmap_DrsOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item; + static int * const drsuapi_drsuapi_DrsOptions_fields[] = { + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_OP, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GETCHG_CHECK, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ADD_REF, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_ALL, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_WRIT_REP, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_INIT_SYNC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_PER_SYNC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_MAIL_REP, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_REP, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_TWOWAY_SYNC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_CRITICAL_ONLY, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_ANC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_NC_SIZE, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NONGC_RO_REP, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_BYNAME, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_NOW, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_FULL_SYNC_PACKET, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_REQUEUE, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_URGENT, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_REF_GCSPN, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NEVER_SYNCED, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_INIT_SYNC_NOW, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_PREEMPTED, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_FORCED, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_DISABLE_AUTO_SYNC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_DISABLE_PERIODIC_SYNC, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_USE_COMPRESSION, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_NEVER_NOTIFY, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_SYNC_PAS, + &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP, + NULL + }; + uint32_t flags; + ALIGN_TO_4_BYTES; + + item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, + ett_drsuapi_drsuapi_DrsOptions, drsuapi_drsuapi_DrsOptions_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)"); + + return offset; +} + + +/* IDL: bitmap { */ +/* IDL: DRSUAPI_DRS_GET_TGT = 0x00000001 , */ +/* IDL: } */ + +int +drsuapi_dissect_bitmap_DrsMoreOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item; + static int * const drsuapi_drsuapi_DrsMoreOptions_fields[] = { + &hf_drsuapi_drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT, + NULL + }; + uint32_t flags; + ALIGN_TO_4_BYTES; + + item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, + ett_drsuapi_drsuapi_DrsMoreOptions, drsuapi_drsuapi_DrsMoreOptions_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 & (~0x00000001)) { + flags &= (~0x00000001); + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } + + return offset; +} + + +/* IDL: bitmap { */ +/* IDL: DRSUAPI_DRS_UPDATE_FLAGS = 0x00000001 , */ +/* IDL: DRSUAPI_DRS_UPDATE_ADDRESS = 0x00000002 , */ +/* IDL: DRSUAPI_DRS_UPDATE_SCHEDULE = 0x00000004 , */ +/* IDL: } */ + +int +drsuapi_dissect_bitmap_DrsUpdate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item; + static int * const drsuapi_drsuapi_DrsUpdate_fields[] = { + &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_FLAGS, + &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_ADDRESS, + &hf_drsuapi_drsuapi_DrsUpdate_DRSUAPI_DRS_UPDATE_SCHEDULE, + NULL + }; + uint32_t flags; + ALIGN_TO_4_BYTES; + + item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, + ett_drsuapi_drsuapi_DrsUpdate, drsuapi_drsuapi_DrsUpdate_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 & (~0x00000007)) { + flags &= (~0x00000007); + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: uint32 version; */ +/* IDL: uint32 buffer_size; */ +/* IDL: hyper padding; */ +/* IDL: [size_is(buffer_size)] uint8 buffer[*]; */ +/* IDL: } */ + +static int +drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_version, 0); + + return offset; +} + +static int +drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_padding, NULL); + + return offset; +} + +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_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer, 0); + + return offset; +} + +static int +drsuapi_dissect_conformant_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_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + struct ndr_generic_array nga_buffer = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_VAR_SIZE_BUFFER_WITH_VERSION_buffer(tvb, offset, pinfo, parent_tree, di, drep, &nga_buffer); + + 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_VAR_SIZE_BUFFER_WITH_VERSION); + } + + offset = drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_version(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_padding(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer(tvb, offset, pinfo, tree, di, drep, &nga_buffer); + + + proto_item_set_len(item, offset-old_offset); + + + return offset; +} + + +/* 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_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_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 + }; + uint32_t 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)"); + + 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_00000008 = 0x00000008 , */ +/* IDL: DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9 = 0x00000200 , */ +/* IDL: DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1 = 0x00000800 , */ +/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_00000008, + &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9, + &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1, + NULL + }; + uint32_t 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 & (~0x00000a0f)) { + flags &= (~0x00000a0f); + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: drsuapi_SupportedExtensions supported_extensions; */ +/* IDL: GUID site_guid; */ +/* IDL: uint32 pid; */ +/* IDL: } */ + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo24_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo24_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_pid, 0); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo24); + } + + offset = drsuapi_dissect_element_DsBindInfo24_supported_extensions(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); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: drsuapi_SupportedExtensions supported_extensions; */ +/* IDL: GUID site_guid; */ +/* IDL: uint32 pid; */ +/* IDL: uint32 repl_epoch; */ +/* IDL: } */ + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo28_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo28_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_pid, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_repl_epoch, 0); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo28); + } + + offset = drsuapi_dissect_element_DsBindInfo28_supported_extensions(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo28_site_guid(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo28_pid(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); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + + +/* 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: } */ + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo32_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo32_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_pid, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_repl_epoch, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo32(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo32); + } + + offset = drsuapi_dissect_element_DsBindInfo32_supported_extensions(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo32_site_guid(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo32_pid(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_4_BYTES; + } + + return offset; +} + + +/* 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: } */ + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo48_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo48_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_pid, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_repl_epoch, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo48_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_config_dn_guid, NULL); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo48); + } + + offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo48_site_guid(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo48_pid(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo48_repl_epoch(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions_ext(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_4_BYTES; + } + + return offset; +} + + +/* 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_DsBindInfo52_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo52_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_site_guid, NULL); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_pid, 0); + + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_repl_epoch, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + 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_DsBindInfo52_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo52_supported_capabilities_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsBindInfo52(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo52); + } + + offset = drsuapi_dissect_element_DsBindInfo52_supported_extensions(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsBindInfo52_site_guid(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_4_BYTES; + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB info; */ +/* IDL: } */ + +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoFallBack_info, 1); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfoFallBack); + } + + 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_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: [range(1,10000)] uint3264 length; */ +/* IDL: [value(length)] uint32 __ndr_length; */ +/* IDL: [switch_is(length)] drsuapi_DsBindInfo info; */ +/* IDL: } */ + + +/* 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_DsReplicaObjectIdentifier___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size, 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_, uint8_t *drep _U_) +{ + 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_DsReplicaObjectIdentifier_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_guid, NULL); + + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_dn, 0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + struct ndr_generic_array nga_dn = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsReplicaObjectIdentifier_dn(tvb, offset, pinfo, parent_tree, di, drep, &nga_dn); + + 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_DsReplicaObjectIdentifier); + } + + 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_DsReplicaObjectIdentifier_sid(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, &nga_dn); + + + proto_item_set_len(item, offset-old_offset); + + + 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: } */ + +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_, uint8_t *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_, uint8_t *drep _U_) +{ + 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_DsReplicaSyncRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsReplicaSyncRequest1_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); + + 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_, uint8_t *drep _U_) +{ + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaSyncRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + 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_DsReplicaSyncRequest2_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsReplicaSyncRequest2_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); + + 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_, uint8_t *drep _U_) +{ + 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_DsReplicaSyncRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaSyncRequest2_options(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaSyncRequest2_correlationID(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_5_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: } */ + +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaSyncRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1,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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaSyncRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req2,0); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaSyncRequest, &item, "drsuapi_DsReplicaSyncRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_, uint8_t *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_DsReplicaHighWaterMark_reserved_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_, uint8_t *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_DsReplicaHighWaterMark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaHighWaterMark); + } + + offset = drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(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_8_BYTES; + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: GUID source_dsa_invocation_id; */ +/* IDL: hyper highest_usn; */ +/* 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_, uint8_t *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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_highest_usn, NULL); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaCursor); + } + + 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); + + + 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(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_DsReplicaCursorCtrEx_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_version, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved1, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_count, 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_, uint8_t *drep _U_) +{ + 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_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_cursors,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaCursorCtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + struct ndr_generic_array nga_cursors = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsReplicaCursorCtrEx_cursors(tvb, offset, pinfo, parent_tree, di, drep, &nga_cursors); + + 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_DsReplicaCursorCtrEx); + } + + offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_version(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, &nga_cursors); + + + proto_item_set_len(item, offset-old_offset); + + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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: } */ + +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_, uint8_t *drep _U_) +{ + 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_DsGetNCChangesRequest5_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsGetNCChangesRequest5_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + 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_DsGetNCChangesRequest5_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_highwatermark,0); + + 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_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector,0); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_replica_flags, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_object_count, 0); + + 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_, uint8_t *drep _U_) +{ + 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_DsGetNCChangesRequest5_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsGetNCChangesRequest5_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_fsmo_info, NULL); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesRequest5); + } + + 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_DsGetNCChangesRequest5_replica_flags(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_object_count(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_ndr_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesRequest5_extended_op(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_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; + } + + 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_DsReplicaOID_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_length, 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_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsReplicaOID_binary_oid__); + + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_binary_oid, 0); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaOID); + } + + offset = drsuapi_dissect_element_DsReplicaOID_length(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_5_BYTES; + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: uint32 id_prefix; */ +/* IDL: drsuapi_DsReplicaOID oid; */ +/* 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_id_prefix, 0); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaOID(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_oid,0); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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); + } + + 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_DsReplicaOIDMapping_Ctr_num_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsReplicaOIDMapping_Ctr_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaOIDMapping(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_mappings,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_attids, 0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsPartialAttributeSet_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + struct ndr_generic_array nga_attids = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsPartialAttributeSet_attids(tvb, offset, pinfo, parent_tree, di, drep, &nga_attids); + + 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, &nga_attids); + + + proto_item_set_len(item, offset-old_offset); + + + 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesRequest, &item, "drsuapi_DsGetNCChangesRequest"); + } + + UNION_ALIGN_TO_8_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_cursors,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaCursor2CtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + struct ndr_generic_array nga_cursors = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsReplicaCursor2CtrEx_cursors(tvb, offset, pinfo, parent_tree, di, drep, &nga_cursors); + + 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, &nga_cursors); + + + proto_item_set_len(item, offset-old_offset); + + + 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo48_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValueCtr_num_values, 0); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAttributeValueCtr_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_site_guid, NULL); + 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_DsBindInfo48_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAttributeValueCtr_values_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_pid, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsAttributeValueCtr_values__); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAttributeValueCtr_values__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_repl_epoch, 0); + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo48_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions_ext, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size, 0); return offset; } 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_config_dn_guid, NULL); + 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_, uint8_t *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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_sid); + + 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_, uint8_t *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_, uint8_t *drep _U_) +{ + /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn IS_INLINE */ return offset; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaObjectIdentifier3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -3233,20 +8244,20 @@ drsuapi_dissect_struct_DsBindInfo48(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_DsBindInfo48); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier3); } - offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsBindInfo48_site_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_DsBindInfo48_pid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsBindInfo48_repl_epoch(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions_ext(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsBindInfo48_config_dn_guid(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); @@ -3261,566 +8272,632 @@ drsuapi_dissect_struct_DsBindInfo48(tvbuff_t *tvb _U_, int offset _U_, packet_in /* 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: [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_DsBindInfo52_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size, 0); return offset; } 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_site_guid, NULL); + 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_, uint8_t *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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_sid); + + 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_, uint8_t *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_, uint8_t *drep _U_) +{ + /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn IS_INLINE */ + + 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo52_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_pid, 0); + 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_DsBindInfo52_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_repl_epoch, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttributeCtr_num_attributes, 0); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAttributeCtr_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions_ext, 0); + 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_DsBindInfo52_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAttributeCtr_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_config_dn_guid, NULL); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_capabilities_ext, 0); + offset = drsuapi_dissect_struct_DsReplicaAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttributeCtr_attributes,0); return offset; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaAttributeCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsBindInfo52); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttributeCtr); } - offset = drsuapi_dissect_element_DsBindInfo52_supported_extensions(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsBindInfo52_site_guid(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_DsReplicaAttributeCtr_num_attributes(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsBindInfo52_supported_capabilities_ext(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_4_BYTES; + ALIGN_TO_5_BYTES; } return offset; } -/* IDL: struct { */ -/* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB info; */ +/* 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: } */ -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoFallBack_info, 1); - - return offset; -} - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - + 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 + }; + uint32_t flags; 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_DsBindInfoFallBack); - } - - offset = drsuapi_dissect_element_DsBindInfoFallBack_info(tvb, offset, pinfo, tree, di, drep); - + 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); - 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_4_BYTES; + if (flags & (~0x00010003)) { + flags &= (~0x00010003); + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } return offset; } -/* IDL: [noprint(1)] [nopull(1)] [nopush(1)] union { */ -/* IDL: [case(24)] [case(24)] drsuapi_DsBindInfo24 info24; */ -/* IDL: [case(28)] [case(28)] drsuapi_DsBindInfo28 info28; */ -/* IDL: [case(32)] [case(32)] drsuapi_DsBindInfo32 info32; */ -/* IDL: [case(48)] [case(48)] drsuapi_DsBindInfo48 info48; */ -/* IDL: [case(52)] [case(52)] drsuapi_DsBindInfo52 info52; */ -/* IDL: [default] ; */ +/* IDL: struct { */ +/* IDL: [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */ +/* IDL: drsuapi_DsReplicaObjectFlags flags; */ +/* IDL: drsuapi_DsReplicaAttributeCtr attribute_ctr; */ /* IDL: } */ static int -drsuapi_dissect_element_DsBindInfo_info24(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaObject_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfo24(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info24,0); + 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_DsBindInfo_info28(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaObject_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfo28(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info28,0); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_identifier,0); return offset; } static int -drsuapi_dissect_element_DsBindInfo_info32(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaObject_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfo32(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info32,0); + offset = drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObject_flags, 0); return offset; } static int -drsuapi_dissect_element_DsBindInfo_info48(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfo48(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info48,0); + 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_DsBindInfo_info52(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfo52(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info52,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_version, 0); return offset; } static int -drsuapi_dissect_element_DsBindInfo_Fallback(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfoFallBack(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_Fallback,0); + offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_change_time); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsBindInfo, &item, "drsuapi_DsBindInfo"); - } - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; - - switch(level) { - case 24: - offset = drsuapi_dissect_element_DsBindInfo_info24(tvb, offset, pinfo, tree, di, drep); - break; - - case 28: - offset = drsuapi_dissect_element_DsBindInfo_info28(tvb, offset, pinfo, tree, di, drep); - break; - - case 32: - offset = drsuapi_dissect_element_DsBindInfo_info32(tvb, offset, pinfo, tree, di, drep); - break; - - case 48: - offset = drsuapi_dissect_element_DsBindInfo_info48(tvb, offset, pinfo, tree, di, drep); - break; - - case 52: - offset = drsuapi_dissect_element_DsBindInfo_info52(tvb, offset, pinfo, tree, di, drep); - break; + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_invocation_id, NULL); - default: - offset = drsuapi_dissect_element_DsBindInfo_Fallback(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); + 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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_usn, NULL); return offset; } -/* IDL: struct { */ -/* IDL: [range(1,10000)] uint3264 length; */ -/* IDL: [switch_is(length)] drsuapi_DsBindInfo info; */ -/* IDL: } */ - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - uint64_t length = 0; proto_item *item = NULL; proto_tree *tree = NULL; - bool oldalign = di->no_align; int old_offset; - di->no_align = true; + 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_DsBindInfoCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaMetaData); } - offset = drsuapi_dissect_element_DsBindInfoCtr_length(tvb, offset, pinfo, tree, di, drep, &length); + 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_DsBindInfoCtr_info(tvb, offset, pinfo, tree, di, drep, &length); + offset = drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); - di->no_align = oldalign; + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } return offset; } /* IDL: struct { */ -/* IDL: [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r,ndr->flags)-4)] 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: [range(0,1048576)] uint32 count; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaMetaData meta_data[*]; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_count, 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_sid, 0); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_guid, NULL); + offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_meta_data,0); return offset; } static int -drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaMetaDataCtr_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_sid); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_dn, 0); + struct ndr_generic_array nga_meta_data = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsReplicaMetaDataCtr_meta_data(tvb, offset, pinfo, parent_tree, di, drep, &nga_meta_data); + + 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, &nga_meta_data); + + + proto_item_set_len(item, offset-old_offset); + 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_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectIdentifier_dn_); + 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_DsReplicaObjectIdentifier_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_dn, 0); + offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_object,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _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_DsReplicaObjectIdentifier); - } - - 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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_is_nc_prefix, 0); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_dn(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid, NULL); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *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); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr,0); 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 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_DsReplicaSyncRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *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); + 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_DsReplicaSyncRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context,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_DsReplicaSyncRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_guid, NULL); + 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_DsReplicaSyncRequest1_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context,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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsReplicaSyncRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_options, 0); + offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_new_highwatermark,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_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; - } + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector,0); -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaSyncRequest1 req1; */ -/* IDL: } */ + return offset; +} 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaSyncRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1,0); + 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_DsReplicaSyncRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; + offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret, 0); - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaSyncRequest, &item, "drsuapi_DsReplicaSyncRequest"); - } + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_object_count, 0); - switch(level) { - case 1: - offset = drsuapi_dissect_element_DsReplicaSyncRequest_req1(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size, 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_tmp_highest_usn, NULL); + 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_DsReplicaHighWaterMark_reserved_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_reserved_usn, NULL); + 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_DsReplicaHighWaterMark_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_highest_usn, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_more_data, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -3832,14 +8909,32 @@ drsuapi_dissect_struct_DsReplicaHighWaterMark(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_DsReplicaHighWaterMark); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr1); } - offset = drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaHighWaterMark_reserved_usn(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_DsReplicaHighWaterMark_highest_usn(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_DsGetNCChangesCtr1_uptodateness_vector(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -3853,117 +8948,105 @@ drsuapi_dissect_struct_DsReplicaHighWaterMark(tvbuff_t *tvb _U_, int offset _U_, } -/* IDL: struct { */ -/* IDL: GUID source_dsa_invocation_id; */ -/* IDL: hyper highest_usn; */ +/* IDL: bitmap { */ +/* IDL: DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE = 0x00000001 , */ /* 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_, uint8_t *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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_highest_usn, NULL); - - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - ALIGN_TO_8_BYTES; + proto_item *item; + static int * const drsuapi_drsuapi_DsLinkedAttributeFlags_fields[] = { + &hf_drsuapi_drsuapi_DsLinkedAttributeFlags_DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE, + NULL + }; + uint32_t flags; + ALIGN_TO_4_BYTES; - old_offset = offset; + 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); - 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); - } + offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); - offset = drsuapi_dissect_element_DsReplicaCursor_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep); + if (!flags) + proto_item_append_text(item, ": (No values set)"); - offset = drsuapi_dissect_element_DsReplicaCursor_highest_usn(tvb, offset, pinfo, tree, di, drep); + if (flags & (~0x00000001)) { + flags &= (~0x00000001); + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } + return offset; +} - proto_item_set_len(item, offset-old_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: } */ - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } +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_, uint8_t *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); return offset; } - -/* 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: } */ - 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_version, 0); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved1, 0); + offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid, 0); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_count, 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_DsReplicaCursorCtrEx_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved2, 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_DsReplicaCursorCtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors_); + offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_originating_add_time); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_cursors,0); + offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_meta_data,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -3975,18 +9058,20 @@ drsuapi_dissect_struct_DsReplicaCursorCtrEx(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_DsReplicaCursorCtrEx); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute); } - offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_attid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved2(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_DsReplicaCursorCtrEx_cursors(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); @@ -4000,178 +9085,109 @@ drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvbuff_t *tvb _U_, int offset _U_, p } -/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - 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: [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_DsGetNCChangesRequest5_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - 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_DsGetNCChangesRequest5_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_source_dsa_invocation_id, NULL); + 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_DsGetNCChangesRequest5_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_naming_context,0); + offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_attid, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_highwatermark,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_DsGetNCChangesRequest5_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_flags, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector,0); + offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_originating_add_time); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_replica_flags, 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_DsGetNCChangesRequest5_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_object_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused1, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_ndr_size, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused2, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_extended_op, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused3, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_fsmo_info, NULL); + offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_timeExpired); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -4183,28 +9199,28 @@ drsuapi_dissect_struct_DsGetNCChangesRequest5(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_DsGetNCChangesRequest5); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute3); } - offset = drsuapi_dissect_element_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_naming_context(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_value(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest5_highwatermark(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_flags(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_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_DsGetNCChangesRequest5_extended_op(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused3(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_info(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_timeExpired(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -4219,632 +9235,707 @@ drsuapi_dissect_struct_DsGetNCChangesRequest5(tvbuff_t *tvb _U_, int offset _U_, /* IDL: struct { */ -/* IDL: [range(0,10000)] uint32 length; */ -/* IDL: [size_is(length)] [unique(1)] uint8 *binary_oid; */ +/* 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_DsReplicaOID_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_length, 0); + 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_DsReplicaOID_binary_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *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 = 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_DsReplicaOID_binary_oid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOID_binary_oid__); + 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_DsReplicaOID_binary_oid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_binary_oid, 0); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_old_highwatermark,0); - ALIGN_TO_5_BYTES; + return offset; +} - old_offset = offset; +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_new_highwatermark,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_DsReplicaOID); - } + return offset; +} - offset = drsuapi_dissect_element_DsReplicaOID_length(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); - offset = drsuapi_dissect_element_DsReplicaOID_binary_oid(tvb, offset, pinfo, tree, di, drep); + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector,0); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_mapping_ctr,0); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_extended_ret, 0); return offset; } - -/* IDL: struct { */ -/* IDL: uint32 id_prefix; */ -/* IDL: drsuapi_DsReplicaOID oid; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_id_prefix, 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_DsReplicaOIDMapping_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaOID(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_oid,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6___ndr_size, 0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - ALIGN_TO_5_BYTES; + 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); - 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_DsReplicaOIDMapping); - } +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_first_object,0); - offset = drsuapi_dissect_element_DsReplicaOIDMapping_id_prefix(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaOIDMapping_oid(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_more_data, 0); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_object_count, 0); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } +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_, uint8_t *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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes_count, 0); -/* IDL: struct { */ -/* IDL: [range(0,0x100000)] uint32 num_mappings; */ -/* IDL: [size_is(num_mappings)] [unique(1)] drsuapi_DsReplicaOIDMapping *mappings; */ -/* IDL: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_num_mappings, 0); + 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_DsReplicaOIDMapping_Ctr_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__); + 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_DsReplicaOIDMapping_Ctr_mappings__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetNCChangesCtr6_drs_error, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesCtr6); } - offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_num_mappings(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings(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); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvb, offset, pinfo, tree, di, drep); - return offset; -} + 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); -/* IDL: enum { */ -/* IDL: DRSUAPI_OBJECTCLASS_top=0x00010000, */ -/* IDL: DRSUAPI_OBJECTCLASS_classSchema=0x0003000d, */ -/* IDL: DRSUAPI_OBJECTCLASS_attributeSchema=0x0003000e, */ -/* IDL: } */ + offset = drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvb, offset, pinfo, tree, di, drep); -int -drsuapi_dissect_enum_DsObjectClassId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - return offset; -} + 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); -/* 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: } */ + 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); -int -drsuapi_dissect_enum_DsAttributeId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; + + 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(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 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_DsPartialAttributeSet_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetNCChangesCtr9_source_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_, uint8_t *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_, uint8_t *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_DsGetNCChangesCtr9_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_, uint8_t *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_, uint8_t *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_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_DsPartialAttributeSet_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetNCChangesCtr9_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_, uint8_t *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_, uint8_t *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_DsGetNCChangesCtr9_old_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - ALIGN_TO_4_BYTES; + offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_new_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_DsPartialAttributeSet); - } +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_, uint8_t *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 = drsuapi_dissect_element_DsPartialAttributeSet_version(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsPartialAttributeSet_reserved1(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector,0); - offset = drsuapi_dissect_element_DsPartialAttributeSet_num_attids(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsPartialAttributeSet_attids(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_mapping_ctr,0); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_extended_ret, 0); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_object_count, 0); 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9___ndr_size, 0); -/* 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: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_destination_dsa_guid, NULL); + 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_DsGetNCChangesRequest8_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object,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_, uint8_t *drep _U_) +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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_more_data, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_naming_context,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_DsGetNCChangesRequest8_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_highwatermark,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_DsGetNCChangesRequest8_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes_count, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector,0); + 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_DsGetNCChangesRequest8_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_replica_flags, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_object_count, 0); + 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_DsGetNCChangesRequest8_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_ndr_size, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_drs_error, 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_extended_op, 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_DsGetNCChangesCtr9); + } + + 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_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_8_BYTES; + } + + return offset; +} + + +/* IDL: struct { */ +/* IDL: [subcontext(0xFFFFFC01)] drsuapi_DsGetNCChangesCtr1 ctr1; */ +/* IDL: } */ + +int +drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + 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_DsGetNCChangesCtr1TS); + } + + offset = drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + return offset; } + +/* IDL: struct { */ +/* IDL: [subcontext(0xFFFFFC01)] drsuapi_DsGetNCChangesCtr6 ctr6; */ +/* IDL: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_fsmo_info, NULL); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6,0); + + return offset; +} + +int +drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + 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_DsGetNCChangesCtr6TS); + } + + offset = drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + + + return offset; +} + + +/* IDL: struct { */ +/* IDL: [subcontext(0xFFFFFC01)] drsuapi_DsGetNCChangesCtr9 ctr9; */ +/* IDL: } */ + +int +drsuapi_dissect_struct_DsGetNCChangesCtr9TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + 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_DsGetNCChangesCtr9TS); + } + + offset = drsuapi_dissect_element_DsGetNCChangesCtr9TS_ctr9(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + return offset; } + +/* IDL: struct { */ +/* IDL: uint32 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr1TS *ts; */ +/* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_decompressed_length, 0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsGetNCChangesMSZIPCtr1_compressed_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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsGetNCChangesMSZIPCtr1_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr1TS)",hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set_ex,0); + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_mapping_ctr,0); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesMSZIPCtr1); } - 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_DsGetNCChangesMSZIPCtr1_decompressed_length(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_DsGetNCChangesMSZIPCtr1_compressed_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest8_mapping_ctr(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts(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; @@ -4852,476 +9943,594 @@ 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 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr6TS *ts; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsGetNCChangesMSZIPCtr6_decompressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_source_dsa_invocation_id, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_compressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr6TS)",hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_naming_context,0); + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_highwatermark,0); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts,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_, uint8_t *drep _U_) +int +drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; - return offset; -} + ALIGN_TO_5_BYTES; -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector,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_DsGetNCChangesMSZIPCtr6); + } + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_decompressed_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_compressed_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts(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: uint32 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr9TS *ts; */ +/* IDL: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_replica_flags, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_decompressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_object_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_compressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_ndr_size, 0); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr9TS)",hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_extended_op, 0); + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_fsmo_info, NULL); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr9TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts,0); 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_, uint8_t *drep _U_) +int +drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + 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_DsGetNCChangesMSZIPCtr9); + } + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_decompressed_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_compressed_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr9_ts(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: uint32 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr1TS *ts; */ +/* IDL: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_decompressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_compressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr1TS)",hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_mapping_ctr,0); + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsMoreOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_more_flags, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesRequest10); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1); } - 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_DsGetNCChangesXPRESSCtr1_decompressed_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest10_mapping_ctr(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_compressed_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesRequest10_more_flags(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr1_ts(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(5)] [case(5)] drsuapi_DsGetNCChangesRequest5 req5; */ -/* IDL: [case(8)] [case(8)] drsuapi_DsGetNCChangesRequest8 req8; */ -/* IDL: [case(10)] [case(10)] drsuapi_DsGetNCChangesRequest10 req10; */ +/* IDL: struct { */ +/* IDL: uint32 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr6TS *ts; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesRequest5(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req5,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_decompressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsGetNCChangesXPRESSCtr6_compressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesRequest10(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req10,0); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr6TS)",hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } + + return offset; +} + +int +drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - uint32_t level; + + ALIGN_TO_5_BYTES; old_offset = offset; + if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesRequest, &item, "drsuapi_DsGetNCChangesRequest"); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6); } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_decompressed_length(tvb, offset, pinfo, tree, di, drep); - switch(level) { - case 5: - offset = drsuapi_dissect_element_DsGetNCChangesRequest_req5(tvb, offset, pinfo, tree, di, drep); - break; + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_compressed_length(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr6_ts(tvb, offset, pinfo, tree, di, drep); - 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; - } 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_invocation_id; */ -/* IDL: hyper highest_usn; */ -/* IDL: NTTIME last_sync_success; */ +/* IDL: uint32 decompressed_length; */ +/* IDL: uint32 compressed_length; */ +/* IDL: [compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr9TS *ts; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_source_dsa_invocation_id, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_decompressed_length, 0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_highest_usn, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_compressed_length, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_last_sync_success); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr9TS)",hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts); + + return offset; +} + +static int +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + uint64_t size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + uint32_t saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); + drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } + + return offset; +} + +static int +drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsGetNCChangesCtr9TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaCursor2); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9); } - offset = drsuapi_dissect_element_DsReplicaCursor2_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_decompressed_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursor2_highest_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_compressed_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursor2_last_sync_success(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNCChangesXPRESSCtr9_ts(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: [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: enum { */ +/* IDL: DRSUAPI_COMPRESSION_TYPE_MSZIP=2, */ +/* IDL: DRSUAPI_COMPRESSION_TYPE_XPRESS=3, */ +/* IDL: } */ + +int +drsuapi_dissect_enum_DsGetNCChangesCompressionType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_) +{ + uint16_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } + return offset; +} + + +/* IDL: [flag(LIBNDR_PRINT_ARRAY_HEX)] [nodiscriminant(1)] union { */ +/* IDL: [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr1 mszip1; */ +/* IDL: [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr6 mszip6; */ +/* IDL: [case(9|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] [case(9|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr9 mszip9; */ +/* IDL: [case(1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] [case(1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] drsuapi_DsGetNCChangesXPRESSCtr1 xpress1; */ +/* IDL: [case(6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] [case(6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] drsuapi_DsGetNCChangesXPRESSCtr6 xpress6; */ +/* IDL: [case(9|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] [case(9|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] drsuapi_DsGetNCChangesXPRESSCtr9 xpress9; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_version, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip1,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved1, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip6,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_count, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr9(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip9,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved2, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress1,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors_); + offset = drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress6,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_cursors,0); + offset = drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr9(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress9,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +static int +drsuapi_dissect_DsGetNCChangesCompressedCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_8_BYTES; + uint32_t level = param; 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); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesCompressedCtr, &item, "drsuapi_DsGetNCChangesCompressedCtr"); } - offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvb, offset, pinfo, tree, di, drep); + UNION_ALIGN_TO_5_BYTES; - offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved1(tvb, offset, pinfo, tree, di, drep); + switch(level) { + case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip1(tvb, offset, pinfo, tree, di, drep); + break; - offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_count(tvb, offset, pinfo, tree, di, drep); + case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip6(tvb, offset, pinfo, tree, di, drep); + break; - offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved2(tvb, offset, pinfo, tree, di, drep); + case 9|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip9(tvb, offset, pinfo, tree, di, drep); + break; - offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors(tvb, offset, pinfo, tree, di, drep); + case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress1(tvb, offset, pinfo, tree, di, drep); + break; + case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress6(tvb, offset, pinfo, tree, di, drep); + break; + case 9|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): + offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress9(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: [range(0,26214400)] [value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size; */ -/* IDL: [unique(1)] DATA_BLOB *blob; */ +/* IDL: drsuapi_DsGetNCChangesMSZIPCtr1 mszip1; */ /* 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_, uint8_t *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_, uint8_t *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; -} - -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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCtr2_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValue_blob, 0); + offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr2_mszip1,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetNCChangesCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -5333,12 +10542,10 @@ drsuapi_dissect_struct_DsAttributeValue(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_DsAttributeValue); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr2); } - 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); + offset = drsuapi_dissect_element_DsGetNCChangesCtr2_mszip1(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -5353,149 +10560,168 @@ drsuapi_dissect_struct_DsAttributeValue(tvbuff_t *tvb _U_, int offset _U_, packe /* IDL: struct { */ -/* IDL: [range(0,10485760)] uint32 num_values; */ -/* IDL: [size_is(num_values)] [unique(1)] drsuapi_DsAttributeValue *values; */ +/* IDL: [range(0,9)] uint32 level; */ +/* IDL: [range(2,3)] drsuapi_DsGetNCChangesCompressionType type; */ +/* IDL: [switch_is(level|(type<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr; */ +/* IDL: } */ + + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1; */ +/* IDL: [case(2)] [case(2)] drsuapi_DsGetNCChangesCtr2 ctr2; */ +/* IDL: [case(6)] [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6; */ +/* IDL: [case(7)] [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7; */ +/* IDL: [case(9)] [case(9)] drsuapi_DsGetNCChangesCtr9 ctr9; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValueCtr_num_values, 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_DsAttributeValueCtr_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = drsuapi_dissect_struct_DsGetNCChangesCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr2,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValueCtr_values__); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr6,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChangesCtr_ctr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAttributeValueCtr_values,0); + offset = drsuapi_dissect_struct_DsGetNCChangesCtr7(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr7,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsGetNCChangesCtr9(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr9,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_5_BYTES; + uint32_t 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_DsAttributeValueCtr); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesCtr, &item, "drsuapi_DsGetNCChangesCtr"); } - offset = drsuapi_dissect_element_DsAttributeValueCtr_num_values(tvb, offset, pinfo, tree, di, drep); + UNION_ALIGN_TO_8_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_8_BYTES; - offset = drsuapi_dissect_element_DsAttributeValueCtr_values(tvb, offset, pinfo, tree, di, drep); + switch(level) { + case 1: + offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvb, offset, pinfo, tree, di, drep); + break; + + case 2: + offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr2(tvb, offset, pinfo, tree, di, drep); + break; + + case 6: + offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvb, offset, pinfo, tree, di, drep); + break; + case 7: + offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr7(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); - 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)] [length_is(__ndr_size_dn+1)] [size_is(__ndr_size_dn+1)] [unique(1)] uint16 *dn; */ +/* 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_DsReplicaObjectIdentifier3___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_sid, 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_DsReplicaObjectIdentifier3_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_guid, NULL); + 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_DsReplicaObjectIdentifier3_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_sid); + 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_DsReplicaObjectIdentifier3___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_dn, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn_, NDR_POINTER_UNIQUE, "Pointer to Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_dn); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn__); + 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_DsReplicaObjectIdentifier3_dn__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_dn, 0); + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -5507,20 +10733,16 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier3(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_DsReplicaObjectIdentifier3); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1); } - 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_DsReplicaUpdateRefsRequest1_naming_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(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_DsReplicaObjectIdentifier3___ndr_size_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn(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); @@ -5535,98 +10757,95 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier3(tvbuff_t *tvb _U_, int 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)] [length_is(__ndr_size_dn+1)] [size_is(__ndr_size_dn+1)] [unique(1)] uint16 *dn; */ -/* IDL: [value(binary.length+4)] uint32 __ndr_size_binary; */ -/* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB binary; */ +/* 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_DsReplicaObjectIdentifier3Binary___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size, 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_DsReplicaObjectIdentifier3Binary___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_sid, 0); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_guid, NULL); + 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_DsReplicaObjectIdentifier3Binary_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_sid); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_dn, 0); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn_, NDR_POINTER_UNIQUE, "Pointer to Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_dn); + 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_DsReplicaObjectIdentifier3Binary_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn__); + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_options, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_dn, 0); + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_correlationID, NULL); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_binary, 0); + 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_DsReplicaObjectIdentifier3Binary_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_binary, 1); + 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_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -5638,24 +10857,20 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int o 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_DsReplicaUpdateRefsRequest2); } - 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_DsReplicaUpdateRefsRequest2_naming_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_sid(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_DsReplicaObjectIdentifier3Binary___ndr_size_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_options(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_binary(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_binary(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); @@ -5669,204 +10884,133 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int o } -/* IDL: struct { */ -/* IDL: drsuapi_DsAttributeId attid; */ -/* IDL: drsuapi_DsAttributeValueCtr value_ctr; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1; */ +/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaUpdateRefsRequest2 req2; */ /* IDL: } */ static int -drsuapi_dissect_element_DsReplicaAttribute_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttribute_attid, 0); + offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req1,0); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAttributeValueCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttribute_value_ctr,0); + offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req2,0); return offset; } -int -drsuapi_dissect_struct_DsReplicaAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_5_BYTES; + uint32_t 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_DsReplicaAttribute); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest, &item, "drsuapi_DsReplicaUpdateRefsRequest"); } - offset = drsuapi_dissect_element_DsReplicaAttribute_attid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaAttribute_value_ctr(tvb, offset, pinfo, tree, di, drep); + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_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); + 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: [range(0,1048576)] uint32 num_attributes; */ -/* IDL: [size_is(num_attributes)] [unique(1)] drsuapi_DsReplicaAttribute *attributes; */ +/* 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_DsReplicaAttributeCtr_num_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsReplicaAttributeCtr_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaAttributeCtr_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__); + 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; } 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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *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 - }; - uint32_t 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; -} + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -/* 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_, uint8_t *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); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_identifier,0); + 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_DsReplicaObject_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObject_flags, 0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_schedule, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaAttributeCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_attribute_ctr,0); + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_options, 0); return offset; } int -drsuapi_dissect_struct_DsReplicaObject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -5878,14 +11022,16 @@ drsuapi_dissect_struct_DsReplicaObject(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_DsReplicaObject); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest1); } - offset = drsuapi_dissect_element_DsReplicaObject_identifier(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAddRequest1_naming_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObject_flags(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObject_attribute_ctr(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); proto_item_set_len(item, offset-old_offset); @@ -5900,135 +11046,145 @@ drsuapi_dissect_struct_DsReplicaObject(tvbuff_t *tvb _U_, int offset _U_, packet /* IDL: struct { */ -/* IDL: uint32 version; */ -/* IDL: NTTIME_1sec originating_change_time; */ -/* IDL: GUID originating_invocation_id; */ -/* IDL: hyper originating_usn; */ +/* 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_DsReplicaMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_version, 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_DsReplicaMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_change_time); + 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_DsReplicaMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_invocation_id, NULL); + 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; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_usn, NULL); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsReplicaMetaData); - } + 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_element_DsReplicaMetaData_version(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn,0); - offset = drsuapi_dissect_element_DsReplicaMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_count, 0); + 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_DsReplicaMetaDataCtr_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_schedule, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_meta_data,0); + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_options, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaMetaDataCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest2); } - offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(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); if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; + ALIGN_TO_5_BYTES; } return offset; @@ -6036,767 +11192,983 @@ drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, p /* IDL: struct { */ -/* IDL: [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: [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_DsReplicaObjectListItemEx_next_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsReplicaObjectListItemEx_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsReplicaAddRequest3_naming_context,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_, uint8_t *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_, uint8_t *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_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_DsReplicaObjectListItemEx_parent_object_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaObjectListItemEx_parent_object_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid, NULL); + 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_DsReplicaObjectListItemEx_meta_data_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr,0); + 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; } -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address, false, &nga, &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_, uint8_t *drep _U_) +{ + int i; + for (i = 0; i < 84; i++) + offset = drsuapi_dissect_element_DsReplicaAddRequest3_schedule_(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_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: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_guid, NULL); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_schedule, 0); 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_, uint8_t *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_, uint8_t *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_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_options, 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_, uint8_t *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_, uint8_t *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_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_correlationID, NULL); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context,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_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_old_highwatermark,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; } -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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_new_highwatermark,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_DsReplicaAddRequest3); + } + + 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_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_5_BYTES; + } return offset; } + +/* 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: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAddRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = drsuapi_dissect_struct_DsReplicaAddRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req1,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAddRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector,0); + offset = drsuapi_dissect_struct_DsReplicaAddRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req2,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_mapping_ctr,0); + offset = drsuapi_dissect_struct_DsReplicaAddRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req3,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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaAddRequest, &item, "drsuapi_DsReplicaAddRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_DsGetNCChangesCtr1_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_object_count, 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_DsGetNCChangesCtr1___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size, 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_DsGetNCChangesCtr1_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsGetNCChangesCtr1_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_more_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_DsGetNCChangesCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaDelRequest1); } - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(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_DsReplicaDelRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaDelRequest1_options(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); + proto_item_set_len(item, offset-old_offset); - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvb, offset, pinfo, tree, di, drep); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvb, offset, pinfo, tree, di, drep); +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaDelRequest1 req1; */ +/* IDL: } */ - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaDelRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest_req1,0); - offset = drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvb, offset, pinfo, tree, di, drep); + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t 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_DsReplicaDelRequest, &item, "drsuapi_DsReplicaDelRequest"); + } + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_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: bitmap { */ -/* IDL: DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE = 0x00000001 , */ +/* 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: } */ -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item; - static int * const drsuapi_drsuapi_DsLinkedAttributeFlags_fields[] = { - &hf_drsuapi_drsuapi_DsLinkedAttributeFlags_DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE, - NULL - }; - uint32_t 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 = 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); - 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_DsReplicaModRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsReplicaModRequest1_source_dra(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra, NULL); -/* 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: } */ + 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_, uint8_t *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_, uint8_t *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 = 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_DsReplicaLinkedAttribute_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid, 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_DsReplicaLinkedAttribute_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_value,0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_schedule, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_flags, 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_DsReplicaLinkedAttribute_originating_add_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_originating_add_time); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_modify_fields, 0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaModRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsReplicaModRequest1_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaModRequest1); } - 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_DsReplicaModRequest1_naming_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_meta_data(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); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } + offset = drsuapi_dissect_element_DsReplicaModRequest1_modify_fields(tvb, offset, pinfo, tree, di, drep); - return offset; -} + 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: } */ + proto_item_set_len(item, offset-old_offset); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_guid, NULL); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } 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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_invocation_id, NULL); - 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_, uint8_t *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_, uint8_t *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); + 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_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context,0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t 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"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; + + 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_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_old_highwatermark,0); return offset; } -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_new_highwatermark,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_status, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector,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_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_num_sids, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_extended_ret, 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_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_object_count, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array__); 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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 = 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_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_more_data, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_object_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_nc_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_linked_attributes_count, 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_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes_count, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__); + offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes,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_DsGetMembershipsCtr1); + } + + 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_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_5_BYTES; + } return offset; } + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_drs_error, 0); + offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsCtr_ctr1,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_8_BYTES; + uint32_t 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_DsGetNCChangesCtr6); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsCtr, &item, "drsuapi_DsGetMembershipsCtr"); } - 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); + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context(tvb, offset, pinfo, tree, di, drep); + 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); - 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); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvb, offset, pinfo, tree, di, drep); +/* 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: } */ - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_mapping_ctr(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_count, 0); - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_extended_ret(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); - offset = drsuapi_dissect_element_DsGetNCChangesCtr6___ndr_size(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_first_object(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_more_data(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_object_count(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array__); - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_linked_attributes_count(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_count(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesCtr6_drs_error(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array,0); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_flags, 0); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_DsMembershipType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_type, 0); 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_, uint8_t *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); -/* IDL: struct { */ -/* IDL: drsuapi_DsGetNCChangesCtr1 ctr1; */ -/* IDL: } */ + return offset; +} static int -drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1,0); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_domain,0); return offset; } int -drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetMembershipsRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesCtr1TS); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMembershipsRequest1); } - offset = drsuapi_dissect_element_DsGetNCChangesCtr1TS_ctr1(tvb, offset, pinfo, tree, di, drep); + 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_8_BYTES; + ALIGN_TO_5_BYTES; } return offset; } -/* IDL: struct { */ -/* IDL: drsuapi_DsGetNCChangesCtr6 ctr6; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsRequest1 req1; */ /* IDL: } */ static int -drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6,0); + offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest_req1,0); return offset; } -int -drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_8_BYTES; + uint32_t 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_DsGetNCChangesCtr6TS); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsRequest, &item, "drsuapi_DsGetMembershipsRequest"); } - offset = drsuapi_dissect_element_DsGetNCChangesCtr6TS_ctr6(tvb, offset, pinfo, tree, di, drep); - + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; + return offset; +} + +/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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 + }; + uint32_t 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; @@ -6804,65 +12176,66 @@ drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvbuff_t *tvb _U_, int offset _U_, p /* IDL: struct { */ -/* IDL: uint32 decompressed_length; */ -/* IDL: uint32 compressed_length; */ -/* IDL: [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr1TS *ts; */ +/* 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_DsGetNCChangesMSZIPCtr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_decompressed_length, 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_DsGetNCChangesMSZIPCtr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_compressed_length, 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_DsGetNCChangesMSZIPCtr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr1TS)",hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_length, 0); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint3264_t size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; + 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); - if (!conformant) { - uint32_t saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); - drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } + 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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_ts,0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data, 0); return offset; } int -drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -6874,14 +12247,16 @@ drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(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_DsGetNCChangesMSZIPCtr1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1); } - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_decompressed_length(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_flags(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_compressed_length(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_preferred_maximum_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr1_ts(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_length(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); @@ -6895,295 +12270,297 @@ drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvbuff_t *tvb _U_, int offset _U_ } -/* IDL: struct { */ -/* IDL: uint32 decompressed_length; */ -/* IDL: uint32 compressed_length; */ -/* IDL: [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr6TS *ts; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1; */ /* IDL: } */ static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_decompressed_length, 0); + offset = drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest_req1,0); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_DsGetNT4ChangeLogRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_compressed_length, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest, &item, "drsuapi_DsGetNT4ChangeLogRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; + + 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); + 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_DsGetNCChangesMSZIPCtr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr6TS)",hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_length, 0); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint3264_t size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; - - if (!conformant) { - uint32_t saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); - drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_length, 0); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts,0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_serial_number, NULL); return offset; } -int -drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_creation_time); - ALIGN_TO_5_BYTES; + return offset; +} - old_offset = 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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_serial_number, NULL); - 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_DsGetNCChangesMSZIPCtr6); - } + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_decompressed_length(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_creation_time); - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_compressed_length(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsGetNCChangesMSZIPCtr6_ts(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_serial_number, NULL); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_creation_time); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_status, 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_, uint8_t *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); -/* IDL: struct { */ -/* IDL: uint32 decompressed_length; */ -/* IDL: uint32 compressed_length; */ -/* IDL: [compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr1TS *ts; */ -/* IDL: } */ + return offset; +} static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data__); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length, 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_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr1TS)",hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts); + 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_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint3264_t size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; + struct ndr_generic_array nga = { .is_conformant = false, }; - if (!conformant) { - uint32_t saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); - drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data__); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts,0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_data, 0); return offset; } int -drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1); } - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_length(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts(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); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_serial_number(tvb, offset, pinfo, tree, di, drep); - return offset; -} + 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); -/* IDL: struct { */ -/* IDL: uint32 decompressed_length; */ -/* IDL: uint32 compressed_length; */ -/* IDL: [compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)] [subcontext(4)] [subcontext_size(compressed_length)] [unique(1)] drsuapi_DsGetNCChangesCtr6TS *ts; */ -/* IDL: } */ + offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data(tvb, offset, pinfo, tree, di, drep); -static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length, 0); + offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data(tvb, offset, pinfo, tree, di, drep); - return offset; -} -static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length, 0); + proto_item_set_len(item, offset-old_offset); - return offset; -} -static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_, NDR_POINTER_UNIQUE, "Pointer to Ts (drsuapi_DsGetNCChangesCtr6TS)",hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } return offset; } -static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - uint3264_t size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; - - if (!conformant) { - uint32_t saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); - drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } - return offset; -} +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1; */ +/* IDL: } */ static int -drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts,0); + offset = drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo_info1,0); return offset; } -int -drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_5_BYTES; + uint32_t 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_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo, &item, "drsuapi_DsGetNT4ChangeLogInfo"); } - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts(tvb, offset, pinfo, tree, di, drep); - + UNION_ALIGN_TO_8_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_8_BYTES; + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } - /* IDL: enum { */ -/* IDL: DRSUAPI_COMPRESSION_TYPE_MSZIP=2, */ -/* IDL: DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2=3, */ +/* 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_DsGetNCChangesCompressionType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_) +drsuapi_dissect_enum_DsNameStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) { - uint16_t parameter=0; + uint32_t parameter=0; if (param) { parameter = *param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } @@ -7191,95 +12568,104 @@ drsuapi_dissect_enum_DsGetNCChangesCompressionType(tvbuff_t *tvb _U_, int offset } -/* IDL: [flag(LIBNDR_PRINT_ARRAY_HEX)] [nodiscriminant(1)] union { */ -/* IDL: [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr1 mszip1; */ -/* IDL: [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr6 mszip6; */ -/* IDL: [case(1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] [case(1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 xpress1; */ -/* IDL: [case(6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] [case(6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 xpress6; */ +/* 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: } */ -static int -drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip1,0); - - return offset; -} - -static int -drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +int +drsuapi_dissect_enum_DsNameFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip6,0); - + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } return offset; } -static int -drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress1,0); - 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_DsGetNCChangesCompressedCtr_xpress6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress6,0); - + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } return offset; } -static int -drsuapi_dissect_DsGetNCChangesCompressedCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level = param; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesCompressedCtr, &item, "drsuapi_DsGetNCChangesCompressedCtr"); - } - - switch(level) { - case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): - offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip1(tvb, offset, pinfo, tree, di, drep); - break; - - case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): - offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_mszip6(tvb, offset, pinfo, tree, di, drep); - break; - case 1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16): - offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress1(tvb, offset, pinfo, tree, di, drep); - break; - - case 6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16): - offset = drsuapi_dissect_element_DsGetNCChangesCompressedCtr_xpress6(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); +/* IDL: struct { */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *str; */ +/* IDL: } */ +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_, uint8_t *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); return offset; } -/* IDL: struct { */ -/* IDL: drsuapi_DsGetNCChangesMSZIPCtr1 mszip1; */ -/* IDL: } */ - static int -drsuapi_dissect_element_DsGetNCChangesCtr2_mszip1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr2_mszip1,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsNameString_str, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } int -drsuapi_dissect_struct_DsGetNCChangesCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7291,10 +12677,10 @@ drsuapi_dissect_struct_DsGetNCChangesCtr2(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_DsGetNCChangesCtr2); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameString); } - offset = drsuapi_dissect_element_DsGetNCChangesCtr2_mszip1(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); @@ -7309,37 +12695,93 @@ drsuapi_dissect_struct_DsGetNCChangesCtr2(tvbuff_t *tvb _U_, int offset _U_, pac /* IDL: struct { */ -/* IDL: [range(0,6)] uint32 level; */ -/* IDL: [range(2,3)] drsuapi_DsGetNCChangesCompressionType type; */ -/* IDL: [switch_is(level|(type<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr; */ +/* 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_DsGetNCChangesCtr7_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_codepage, 0); + + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_language, 0); + + 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_, uint8_t *drep _U_) +{ + 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_DsNameRequest1_format_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsNameRequest1_format_desired(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_DsNameRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_count, 0); + + 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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_level, 0); + 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_DsGetNCChangesCtr7_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsGetNCChangesCompressionType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_type, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsNameRequest1_names__); return offset; } static int -drsuapi_dissect_element_DsGetNCChangesCtr7_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetNCChangesCompressedCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr7_ctr, 0); + offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest1_names,0); return offset; } int -drsuapi_dissect_struct_DsGetNCChangesCtr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7351,14 +12793,22 @@ drsuapi_dissect_struct_DsGetNCChangesCtr7(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_DsGetNCChangesCtr7); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameRequest1); } - offset = drsuapi_dissect_element_DsGetNCChangesCtr7_level(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsNameRequest1_codepage(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsNameRequest1_language(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsNameRequest1_format_flags(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsNameRequest1_format_offered(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsNameRequest1_format_desired(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesCtr7_type(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsNameRequest1_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetNCChangesCtr7_ctr(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); @@ -7373,46 +12823,19 @@ drsuapi_dissect_struct_DsGetNCChangesCtr7(tvbuff_t *tvb _U_, int offset _U_, pac /* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1; */ -/* IDL: [case(2)] [case(2)] drsuapi_DsGetNCChangesCtr2 ctr2; */ -/* IDL: [case(6)] [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6; */ -/* IDL: [case(7)] [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7; */ +/* IDL: [case(1)] [case(1)] drsuapi_DsNameRequest1 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_, uint8_t *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_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsGetNCChangesCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr2,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_, uint8_t *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_ctr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNCChangesCtr7(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr7,0); + offset = drsuapi_dissect_struct_DsNameRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_DsNameRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7421,27 +12844,16 @@ 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_DsNameRequest, &item, "drsuapi_DsNameRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 1: - offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvb, offset, pinfo, tree, di, drep); - break; - - case 2: - offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr2(tvb, offset, pinfo, tree, di, drep); - break; - - case 6: - offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvb, offset, pinfo, tree, di, drep); - break; - - case 7: - offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr7(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsNameRequest_req1(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -7451,65 +12863,67 @@ drsuapi_dissect_DsGetNCChangesCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info } /* 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: 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_DsReplicaUpdateRefsRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + offset = drsuapi_dissect_enum_DsNameStatus(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameInfo1_status, 0); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context,0); + 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_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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; -} + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; -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_, uint8_t *drep _U_) -{ - char *data; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsNameInfo1_dns_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, NULL); + 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_DsReplicaUpdateRefsRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsNameInfo1_result_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsNameInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7521,16 +12935,14 @@ drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(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_DsReplicaUpdateRefsRequest1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameInfo1); } - 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_DsNameInfo1_status(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsNameInfo1_dns_domain_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_options(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); @@ -7538,121 +12950,55 @@ drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvbuff_t *tvb _U_, int 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_DsReplicaUpdateRefsRequest1 req1; */ -/* 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_, uint8_t *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_DsReplicaUpdateRefsRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest, &item, "drsuapi_DsReplicaUpdateRefsRequest"); - } - - 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; - } - proto_item_set_len(item, offset-old_offset); - - - 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_DsReplicaAddRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _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); + } 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_, uint8_t *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: uint32 count; */ +/* IDL: [size_is(count)] [unique(1)] drsuapi_DsNameInfo1 *array; */ +/* 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameCtr1_count, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsReplicaAddRequest1_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - int i; - for (i = 0; i < 84; i++) - offset = drsuapi_dissect_element_DsReplicaAddRequest1_schedule_(tvb, offset, pinfo, tree, di, drep); + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_schedule, 0); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsNameCtr1_array__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_options, 0); + offset = drsuapi_dissect_struct_DsNameInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr1_array,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7664,16 +13010,12 @@ 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_DsNameCtr1); } - 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_DsNameCtr1_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAddRequest1_options(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); @@ -7687,110 +13029,160 @@ 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: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] [unique(1)] drsuapi_DsNameCtr1 *ctr1; */ /* 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_, uint8_t *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_, uint8_t *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); + 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_DsReplicaAddRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_naming_context,0); + offset = drsuapi_dissect_struct_DsNameCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr_ctr1,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_, uint8_t *drep _U_) +drsuapi_dissect_DsNameCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameCtr, &item, "drsuapi_DsNameCtr"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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; } -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn,0); +/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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: } */ + 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_, uint8_t *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_, uint8_t *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_DsSpnOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_operation, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_unknown1, 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_, uint8_t *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_, uint8_t *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 = 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_DsReplicaAddRequest2_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn, false, &nga, &data); proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - int i; - for (i = 0; i < 84; i++) - offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule_(tvb, offset, pinfo, tree, di, drep); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_schedule, 0); + 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_DsReplicaAddRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_options, 0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, 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_, uint8_t *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_DsReplicaAddRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7802,20 +13194,18 @@ 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_DsWriteAccountSpnRequest1); } - offset = drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_operation(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_unknown1(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAddRequest2_options(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); @@ -7830,28 +13220,19 @@ drsuapi_dissect_struct_DsReplicaAddRequest2(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(1)] [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1; */ /* 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaAddRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req2,0); + offset = drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest_req1,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7860,19 +13241,16 @@ 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_DsWriteAccountSpnRequest, &item, "drsuapi_DsWriteAccountSpnRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_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); + offset = drsuapi_dissect_element_DsWriteAccountSpnRequest_req1(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -7882,82 +13260,41 @@ drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in } /* IDL: struct { */ -/* IDL: [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */ -/* IDL: [charset(UTF8)] [unique(1)] uint8 *source_dsa_address; */ -/* IDL: drsuapi_DrsOptions options; */ +/* IDL: WERROR status; */ /* 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_, uint8_t *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); - - 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_, uint8_t *drep _U_) -{ - 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_DsReplicaDelRequest1_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); - - 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_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address, 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_, uint8_t *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_, uint8_t *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_DsWriteAccountSpnResult1_status, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaDelRequest1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsWriteAccountSpnResult1); } - offset = drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaDelRequest1_options(tvb, offset, pinfo, tree, di, drep); + 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_5_BYTES; + ALIGN_TO_4_BYTES; } return offset; @@ -7965,19 +13302,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_DsWriteAccountSpnResult1 res1; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaDelRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest_req1,0); + offset = drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnResult_res1,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_DsWriteAccountSpnResult(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -7986,15 +13323,16 @@ 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_DsWriteAccountSpnResult, &item, "drsuapi_DsWriteAccountSpnResult"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case 1: - offset = drsuapi_dissect_element_DsReplicaDelRequest_req1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsWriteAccountSpnResult_res1(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -8004,102 +13342,67 @@ 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: [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_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); - - 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_, uint8_t *drep _U_) -{ - 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_DsReplicaModRequest1_source_dra(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra, NULL); + 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_source_dra_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); - - return offset; -} + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; -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_, uint8_t *drep _U_) -{ - char *data; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_server_dn, false, &nga, &data); proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_) -{ - 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_DsReplicaModRequest1_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_schedule, 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_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_replica_flags, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_modify_fields, 0); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -8111,22 +13414,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); @@ -8141,19 +13436,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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -8162,15 +13457,16 @@ 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"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; 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); @@ -8179,154 +13475,148 @@ 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; + uint32_t 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"); + } + + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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 = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name, false, &nga, &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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids); + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -8338,20 +13628,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); @@ -8366,19 +13648,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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -8387,15 +13669,16 @@ 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"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; 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); @@ -8405,87 +13688,148 @@ 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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 = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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 = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_dns_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_flags, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_site_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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 = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_computer_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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; +} + +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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_server_dn, false, &nga, &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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_pdc, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_enabled, 0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsGetDCInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -8497,18 +13841,22 @@ drsuapi_dissect_struct_DsGetMembershipsRequest1(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_DsGetMembershipsRequest1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo1); } - offset = drsuapi_dissect_element_DsGetMembershipsRequest1_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo1_netbios_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetMembershipsRequest1_info_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo1_dns_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetMembershipsRequest1_flags(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo1_site_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetMembershipsRequest1_type(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo1_computer_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetMembershipsRequest1_domain(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo1_server_dn(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -8522,552 +13870,412 @@ drsuapi_dissect_struct_DsGetMembershipsRequest1(tvbuff_t *tvb _U_, int offset _U } -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsRequest1 req1; */ +/* IDL: struct { */ +/* IDL: [range(0,10000)] uint32 count; */ +/* IDL: [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo1 *array; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *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_DsGetDCInfoCtr1_count, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; + 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); - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsRequest, &item, "drsuapi_DsGetMembershipsRequest"); - } + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; +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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; - 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 = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetDCInfoCtr1_array__); return offset; } -/* IDL: bitmap { */ -/* IDL: DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG = 0x00000001 , */ -/* IDL: DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS = 0x00000002 , */ -/* IDL: } */ +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsGetDCInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr1_array,0); + + return offset; +} 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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 - }; - uint32_t 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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; - offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); + ALIGN_TO_5_BYTES; - if (!flags) - proto_item_append_text(item, ": (No values set)"); + old_offset = offset; - if (flags & (~0x00000003)) { - flags &= (~0x00000003); - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + 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); } - return offset; -} + offset = drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfoCtr1_array(tvb, offset, pinfo, tree, di, drep); -/* 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_DsGetNT4ChangeLogRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_flags, 0); + proto_item_set_len(item, offset-old_offset); - 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_preferred_maximum_length, 0); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_length, 0); - 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: GUID site_guid; */ +/* IDL: GUID computer_guid; */ +/* IDL: GUID server_guid; */ +/* IDL: GUID ntds_guid; */ +/* IDL: } */ 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_, uint8_t *drep _U_) +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_, uint8_t *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_DsGetDCInfo2_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data, 0); + 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; } -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsGetNT4ChangeLogRequest1); - } - - 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_DsGetNT4ChangeLogRequest1_restart_data(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } - -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1; */ -/* IDL: } */ - 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_, uint8_t *drep _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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest_req1,0); + 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); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - 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); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_site_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_length, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_site_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_creation_time); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_creation_time); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_server_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_creation_time); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; -} - + offset = drsuapi_dissect_element_DsGetDCInfo2_netbios_name(tvb, offset, pinfo, tree, di, drep); -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1; */ -/* IDL: } */ + offset = drsuapi_dissect_element_DsGetDCInfo2_dns_name(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo_info1,0); + offset = drsuapi_dissect_element_DsGetDCInfo2_site_name(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsGetDCInfo2_site_dn(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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; + offset = drsuapi_dissect_element_DsGetDCInfo2_computer_dn(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_server_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_ntds_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_is_pdc(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo2_is_enabled(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsGetDCInfo2_is_gc(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_site_guid(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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - return offset; -} + offset = drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsGetDCInfo2_server_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_ntds_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *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_, uint8_t *drep _U_) { - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - 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_, uint8_t *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_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -9079,10 +14287,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); @@ -9097,222 +14307,250 @@ 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_language, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsNameFormat(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_offered, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_count, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_site_name, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameRequest1_names__); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - ALIGN_TO_5_BYTES; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - old_offset = offset; + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_computer_dn, false, &nga, &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_DsNameRequest1); - } + return offset; +} - offset = drsuapi_dissect_element_DsNameRequest1_codepage(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_, uint8_t *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_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = drsuapi_dissect_element_DsNameRequest1_format_offered(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = drsuapi_dissect_element_DsNameRequest1_format_desired(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); - offset = drsuapi_dissect_element_DsNameRequest1_count(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsNameRequest1_names(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn, false, &nga, &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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_enabled, 0); - 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); + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_gc, 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_DsNameInfo1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -9324,14 +14562,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); @@ -9346,44 +14608,48 @@ 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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -9395,12 +14661,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); @@ -9414,361 +14680,534 @@ 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: 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: } */ 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_, uint8_t *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_, uint8_t *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); + 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_DsNameCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsNameCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr_ctr1,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown2, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_connection_time, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown4, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown5, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown6, 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_, uint8_t *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; +} + +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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCConnection01_client_account, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); + + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - uint32_t level; + + ALIGN_TO_5_BYTES; old_offset = offset; + if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameCtr, &item, "drsuapi_DsNameCtr"); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCConnection01); } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvb, offset, pinfo, tree, di, drep); - 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); + 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); - return offset; -} + offset = drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvb, offset, pinfo, tree, di, drep); -/* IDL: enum { */ -/* IDL: DRSUAPI_DS_SPN_OPERATION_ADD=0, */ -/* IDL: DRSUAPI_DS_SPN_OPERATION_REPLACE=1, */ -/* IDL: DRSUAPI_DS_SPN_OPERATION_DELETE=2, */ -/* IDL: } */ + offset = drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvb, offset, pinfo, tree, di, drep); -int -drsuapi_dissect_enum_DsSpnOperation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; + offset = drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsGetDCConnection01_client_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; } /* 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: [size_is(count)] [unique(1)] drsuapi_DsGetDCConnection01 *array; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsSpnOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_operation, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_count, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_unknown1, 0); + 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_DsWriteAccountSpnRequest1_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetDCConnectionCtr01_array__); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; + offset = drsuapi_dissect_struct_DsGetDCConnection01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array,0); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetDCConnectionCtr01); + } + + offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_count(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); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_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: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_count, 0); + offset = drsuapi_dissect_struct_DsGetDCInfoCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr1,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_, uint8_t *drep _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_, uint8_t *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 = drsuapi_dissect_struct_DsGetDCInfoCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr2,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetDCInfoCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names__); + offset = drsuapi_dissect_struct_DsGetDCInfoCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr3,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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetDCInfoCtr_ctr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_spn_names,0); + offset = drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr01,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_5_BYTES; + uint32_t 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_DsWriteAccountSpnRequest1); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoCtr, &item, "drsuapi_DsGetDCInfoCtr"); } - 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); + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; - offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvb, offset, pinfo, tree, di, drep); + switch(level) { + case DRSUAPI_DC_INFO_CTR_1: + offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr1(tvb, offset, pinfo, tree, di, drep); + break; - offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names(tvb, offset, pinfo, tree, di, drep); + 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); - 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_DsWriteAccountSpnRequest1 req1; */ +/* IDL: struct { */ +/* IDL: [max_recursion(20000)] [unique(1)] drsuapi_DsReplicaObjectListItem *next_object; */ +/* IDL: drsuapi_DsReplicaObject object; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest_req1,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_DsWriteAccountSpnRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_element_DsReplicaObjectListItem_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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 = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItem_object,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_DsWriteAccountSpnRequest_req1(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); +/* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } return offset; } + /* IDL: struct { */ -/* IDL: WERROR status; */ +/* IDL: drsuapi_DsReplicaObjectListItem first_object; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnResult1_status, 0); + offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsAddEntryRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsAddEntryRequest2); } - offset = drsuapi_dissect_element_DsWriteAccountSpnResult1_status(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryRequest2_first_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_DsWriteAccountSpnResult1 res1; */ +/* 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: } */ + +int +drsuapi_dissect_enum_SecBufferType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } + return offset; +} + + +/* IDL: struct { */ +/* 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_DsWriteAccountSpnResult_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnResult_res1,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_size, 0); return offset; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_enum_SecBufferType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_type, 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_, uint8_t *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_SecBuffer_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buffer, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - uint32_t level; + + ALIGN_TO_5_BYTES; old_offset = offset; + if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsWriteAccountSpnResult, &item, "drsuapi_DsWriteAccountSpnResult"); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_SecBuffer); } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + offset = drsuapi_dissect_element_SecBuffer_buf_size(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); + - 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); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } + /* IDL: struct { */ -/* IDL: [charset(UTF16)] [unique(1)] uint16 *server_dn; */ -/* IDL: [charset(UTF16)] [unique(1)] uint16 *domain_dn; */ -/* IDL: uint32 commit; */ +/* 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_DsRemoveDSServerRequest1_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_version, 0); 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_, uint8_t *drep _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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_SecBufferDesc_buff_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_, uint8_t *drep _U_) +drsuapi_dissect_element_SecBufferDesc_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_SecBufferDesc_buffers_, NDR_POINTER_UNIQUE, "Pointer to Buffers (drsuapi_SecBuffer)",hf_drsuapi_drsuapi_SecBufferDesc_buffers); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_SecBufferDesc_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_SecBufferDesc_buffers__); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_SecBufferDesc_buffers__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_commit, 0); + offset = drsuapi_dissect_struct_SecBuffer(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_SecBufferDesc_buffers,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_SecBufferDesc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -9780,14 +15219,14 @@ 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_SecBufferDesc); } - offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_SecBufferDesc_version(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_SecBufferDesc_buff_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_commit(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_SecBufferDesc_buffers(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -9801,81 +15240,61 @@ 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: struct { */ +/* IDL: drsuapi_DsReplicaObjectListItem first_object; */ +/* IDL: [unique(1)] drsuapi_SecBufferDesc *client_creds; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerRequest_req1,0); + offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_first_object,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; - - old_offset = offset; - if (parent_tree) { - 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); - ALIGN_TO_5_BYTES; - - switch(level) { - case 1: - offset = drsuapi_dissect_element_DsRemoveDSServerRequest_req1(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); - + 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; } -/* IDL: struct { */ -/* IDL: uint32 last_dc_in_domain; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerResult1_last_dc_in_domain, 0); + offset = drsuapi_dissect_struct_SecBufferDesc(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsAddEntryRequest3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsAddEntryRequest3); } - offset = drsuapi_dissect_element_DsRemoveDSServerResult1_last_dc_in_domain(tvb, offset, pinfo, tree, di, drep); + 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_4_BYTES; + ALIGN_TO_5_BYTES; } return offset; @@ -9883,19 +15302,28 @@ drsuapi_dissect_struct_DsRemoveDSServerResult1(tvbuff_t *tvb _U_, int offset _U_ /* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsRemoveDSServerResult1 res1; */ +/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryRequest2 req2; */ +/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryRequest3 req3; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsRemoveDSServerResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerResult_res1,0); + offset = drsuapi_dissect_struct_DsAddEntryRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req2,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsAddEntryRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req3,0); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -9904,15 +15332,20 @@ drsuapi_dissect_DsRemoveDSServerResult(tvbuff_t *tvb _U_, int offset _U_, packet old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsRemoveDSServerResult, &item, "drsuapi_DsRemoveDSServerResult"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryRequest, &item, "drsuapi_DsAddEntryRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { - case 1: - offset = drsuapi_dissect_element_DsRemoveDSServerResult_res1(tvb, offset, pinfo, tree, di, drep); + 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); @@ -9921,254 +15354,282 @@ drsuapi_dissect_DsRemoveDSServerResult(tvbuff_t *tvb _U_, int offset _U_, packet 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: struct { */ +/* IDL: uint32 dsid; */ +/* IDL: WERROR extended_err; */ +/* IDL: uint32 extended_data; */ +/* IDL: uint16 problem; */ /* 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +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_, uint8_t *drep _U_) { - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_dsid, 0); + return offset; } - -/* IDL: struct { */ -/* IDL: [charset(UTF16)] [unique(1)] uint16 *domain_name; */ -/* IDL: drsuapi_DsGetDCInfoCtrLevels level; */ -/* 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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfoX_extended_err, 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_data, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoRequest1_level, 0); + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_problem, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetDCInfoRequest1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfoX); } - offset = drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfoRequest1_level(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(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; } -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetDCInfoRequest1 req1; */ +/* 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: } */ 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_, uint8_t *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_, uint8_t *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_DsAddEntry_AttrErr_V1_dsid, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_err, 0); - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoRequest, &item, "drsuapi_DsGetDCInfoRequest"); - } + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_data, 0); - 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); + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_problem, 0); 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: } */ +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_, uint8_t *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_DsGetDCInfo1_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *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 = 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_DsGetDCInfo1_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - char *data; + 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_DsAddEntry_AttrErr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsAddEntry_AttrErr_V1); + } + + offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(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); + - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_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_DsGetDCInfo1_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); - return offset; -} +/* IDL: struct { */ +/* IDL: [max_recursion(20000)] [unique(1)] drsuapi_DsAddEntry_AttrErrListItem_V1 *next; */ +/* IDL: drsuapi_DsAddEntry_AttrErr_V1 err_data; */ +/* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_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_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_DsGetDCInfo1_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsGetDCInfo1_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_site_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_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + 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_DsGetDCInfo1_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; + offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_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; */ +/* IDL: uint32 count; */ +/* IDL: drsuapi_DsAddEntry_AttrErrListItem_V1 first; */ +/* 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_, uint8_t *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_, uint8_t *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 = 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_DsGetDCInfo1_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo1_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_DsAddEntryErrorInfo_Attr_V1_id,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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Attr_V1_count, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_enabled, 0); + offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_first,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -10180,22 +15641,14 @@ drsuapi_dissect_struct_DsGetDCInfo1(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_DsGetDCInfo1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1); } - 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_DsGetDCInfo1_server_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -10210,44 +15663,63 @@ 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: [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_matched; */ /* 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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Name_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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Name_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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Name_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_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Name_V1_problem, 0); + + 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_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + 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_DsGetDCInfoCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -10259,12 +15731,18 @@ 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_DsAddEntryErrorInfo_Name_V1); } - offset = drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_dsid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfoCtr1_array(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); @@ -10279,306 +15757,284 @@ 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: [value(83)] uint8 name_res; */ +/* IDL: [value(0)] uint8 unused_pad; */ +/* IDL: [value(0)] uint16 next_rdn; */ /* 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_name_res, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsGetDCInfo2_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_next_rdn, 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_NameResOp_V1); + } + + offset = drsuapi_dissect_element_NameResOp_V1_name_res(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_2_BYTES; + } 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_, uint8_t *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); +/* 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: } */ + +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_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_) +{ + uint16_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } 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_, uint8_t *drep _U_) -{ - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_site_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_, uint8_t *drep _U_, int hf_index _U_, uint8_t *param _U_) +{ + uint8_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } 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_, uint8_t *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: [max_recursion(1024)] [unique(1)] drsuapi_DsaAddressListItem_V1 *next; */ +/* IDL: [unique(1)] lsa_String *address; */ +/* 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_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_DsGetDCInfo2_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_DsGetDCInfo2_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn, 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_DsGetDCInfo2_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; - return offset; -} + ALIGN_TO_5_BYTES; -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_, uint8_t *drep _U_) -{ - char *data; + old_offset = offset; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo2_server_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_DsGetDCInfo2_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + offset = drsuapi_dissect_element_DsaAddressListItem_V1_address(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_, uint8_t *drep _U_) -{ - char *data; + proto_item_set_len(item, offset-old_offset); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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; } + +/* 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_DsGetDCInfo2_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_pdc, 0); + 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_DsGetDCInfo2_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_enabled, 0); + 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_DsGetDCInfo2_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_gc, 0); + 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_DsGetDCInfo2_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_site_guid, NULL); + 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_DsGetDCInfo2_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsAddEntry_RefErrListItem_V1_rdn_internal, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_server_guid, NULL); + 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_DsGetDCInfo2_ntds_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_guid, NULL); + offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list_count, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsGetDCInfo2); - } - - 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_DsGetDCInfo2_site_guid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvb, offset, pinfo, tree, di, drep); - - 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; - } + 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; } - -/* IDL: struct { */ -/* IDL: [range(0,10000)] uint32 count; */ -/* IDL: [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo2 *array; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr2_count, 0); + 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_DsGetDCInfoCtr2_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_DsGetDCInfoCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr2_array__); + 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_DsGetDCInfoCtr2_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetDCInfo2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr2_array,0); + 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_DsGetDCInfoCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -10590,243 +16046,282 @@ drsuapi_dissect_struct_DsGetDCInfoCtr2(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_DsGetDCInfoCtr2); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1); } - offset = drsuapi_dissect_element_DsGetDCInfoCtr2_count(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsGetDCInfoCtr2_array(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_DsAddEntry_RefErrListItem_V1_op_state(tvb, offset, pinfo, tree, di, drep); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_ref_type(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvb, offset, pinfo, tree, di, drep); -/* 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: } */ + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _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); + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name, false, &data); - proto_item_append_text(tree, ": %s", data); + proto_item_set_len(item, offset-old_offset); - 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_, uint8_t *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); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } 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_, uint8_t *drep _U_) -{ - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name, false, &data); - proto_item_append_text(tree, ": %s", data); +/* IDL: struct { */ +/* IDL: uint32 dsid; */ +/* IDL: WERROR extended_err; */ +/* IDL: uint32 extended_data; */ +/* IDL: drsuapi_DsAddEntry_RefErrListItem_V1 refer; */ +/* 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_, uint8_t *drep _U_) +{ + 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_DsGetDCInfo3_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_DsGetDCInfo3_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_site_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsGetDCInfo3_site_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _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); + offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + ALIGN_TO_5_BYTES; - return offset; -} + old_offset = 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_, uint8_t *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); + 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); + } - return offset; -} + offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(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_, uint8_t *drep _U_) -{ - char *data; + 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); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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: [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_DsGetDCInfo3_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_struct_DsAddEntryErrorInfo_Attr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_attr_err,0); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsGetDCInfo3_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsAddEntryErrorInfo_Referr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_referral_err,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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsGetDCInfo3_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_pdc, 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_DsGetDCInfo3_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_enabled, 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_DsGetDCInfo3_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_gc, 0); + 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_DsGetDCInfo3_is_rodc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_rodc, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryErrorInfo, &item, "drsuapi_DsAddEntryErrorInfo"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_DsGetDCInfo3_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_site_guid, NULL); + 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_DsGetDCInfo3_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, uint32_t *dir_err) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_computer_guid, NULL); + 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_DsGetDCInfo3_server_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, uint32_t dir_err) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_server_guid, NULL); + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 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); + + di->switch_level = saved_switch_level; 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_guid, NULL); + offset = drsuapi_dissect_DsAddEntryErrorInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info, di->switch_level); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + uint32_t dir_err = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -10837,38 +16332,14 @@ 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_ErrData_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_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_DsAddEntry_ErrData_V1_status(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfo3_server_guid(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_DsGetDCInfo3_ntds_guid(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); @@ -10882,69 +16353,93 @@ 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: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr3_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_DsGetDCInfoCtr3_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t 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"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_DsGetDCInfoCtr3_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr3_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_DsGetDCInfoCtr3_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetDCInfo3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr3_array,0); + offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_sid); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsGetDCInfoCtr3); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier2); } - offset = drsuapi_dissect_element_DsGetDCInfoCtr3_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCInfoCtr3_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; @@ -10952,84 +16447,110 @@ 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: [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_DsGetDCConnection01_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - proto_tree_add_item(tree, hf_drsuapi_drsuapi_DsGetDCConnection01_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_DsAddEntryCtr2_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryCtr2_id); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown2, 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_DsGetDCConnection01_connection_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_connection_time, 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_DsGetDCConnection01_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown4, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dsid, 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_, uint8_t *drep _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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown5, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown6, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_data, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAddEntryCtr2_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_problem, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAddEntryCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_count, 0); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsGetDCConnection01_client_account, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_, uint8_t *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_DsAddEntryCtr2_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsAddEntryCtr2_objects__); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_objects,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -11041,22 +16562,24 @@ 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_DsAddEntryCtr2); } - offset = drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_id(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_dir_err(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_connection_time(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_dsid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_err(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_data(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_problem(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnection01_client_account(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr2_count(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsAddEntryCtr2_objects(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -11071,45 +16594,99 @@ drsuapi_dissect_struct_DsGetDCConnection01(tvbuff_t *tvb _U_, int offset _U_, pa /* 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_DsGetDCConnection01 *array; */ +/* IDL: [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier2 *objects; */ /* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAddEntryCtr3_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_count, 0); + 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_DsGetDCConnectionCtr01_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsAddEntryCtr3_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _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); + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_id,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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, uint32_t *err_ver) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnectionCtr01_array__); + 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_DsGetDCConnectionCtr01_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, uint32_t err_ver) { - offset = drsuapi_dissect_struct_DsGetDCConnection01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array,0); + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 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); + + di->switch_level = saved_switch_level; + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_DsAddEntry_ErrData(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data, di->switch_level); + + 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_count, 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_, uint8_t *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); + + 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_, uint8_t *drep _U_) +{ + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsAddEntryCtr3_objects__); + + 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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_objects,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + uint32_t err_ver = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -11120,12 +16697,18 @@ drsuapi_dissect_struct_DsGetDCConnectionCtr01(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_DsGetDCConnectionCtr01); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryCtr3); } - offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsAddEntryCtr3_id(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_array(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_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); @@ -11139,47 +16722,29 @@ drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvbuff_t *tvb _U_, int offset _U_, } -/* 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: [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_DsGetDCInfoCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsGetDCInfoCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr1,0); - - 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetDCInfoCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr3,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_DsGetDCInfoCtr_ctr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr01,0); + offset = drsuapi_dissect_struct_DsAddEntryCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr3,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_DsAddEntryCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -11188,27 +16753,20 @@ drsuapi_dissect_DsGetDCInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *p old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoCtr, &item, "drsuapi_DsGetDCInfoCtr"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryCtr, &item, "drsuapi_DsAddEntryCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { - 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); + case 2: + offset = drsuapi_dissect_element_DsAddEntryCtr_ctr2(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); + case 3: + offset = drsuapi_dissect_element_DsAddEntryCtr_ctr3(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -11217,141 +16775,173 @@ drsuapi_dissect_DsGetDCInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *p 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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 + }; + uint32_t 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: [unique(1)] drsuapi_DsReplicaObjectListItem *next_object; */ -/* IDL: drsuapi_DsReplicaObject object; */ +/* IDL: uint32 taskID; */ +/* IDL: drsuapi_DsExecuteKCCFlags flags; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_taskID, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItem_object,0); + offset = drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_flags, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaObjectListItem); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsExecuteKCC1); } - offset = drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsExecuteKCC1_taskID(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjectListItem_object(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: 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - return offset; -} - - -/* IDL: struct { */ -/* IDL: drsuapi_DsReplicaObjectListItem first_object; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsExecuteKCC1 ctr1; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0); + offset = drsuapi_dissect_struct_DsExecuteKCC1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsExecuteKCCRequest_ctr1,0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_5_BYTES; + uint32_t 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_DsAddEntryRequest2); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsExecuteKCCRequest, &item, "drsuapi_DsExecuteKCCRequest"); } - offset = drsuapi_dissect_element_DsAddEntryRequest2_first_object(tvb, offset, pinfo, tree, di, drep); - + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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: 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } return offset; } /* 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: 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: } */ int -drsuapi_dissect_enum_SecBufferType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +drsuapi_dissect_enum_DsReplicaInfoType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) { uint32_t parameter=0; if (param) { @@ -11366,53 +16956,52 @@ drsuapi_dissect_enum_SecBufferType(tvbuff_t *tvb _U_, int offset _U_, packet_inf /* IDL: struct { */ -/* IDL: [range(0,10000)] uint32 buf_size; */ -/* IDL: drsuapi_SecBufferType buf_type; */ -/* IDL: [size_is(buf_size)] [unique(1)] uint8 *buffer; */ +/* IDL: drsuapi_DsReplicaInfoType info_type; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *object_dn; */ +/* IDL: GUID source_dsa_guid; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_size, 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_SecBuffer_buf_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_SecBufferType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_type, 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_SecBuffer_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBuffer_buffer__); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn, false, &nga, &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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buffer, 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_SecBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -11424,14 +17013,14 @@ 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_DsReplicaGetInfoRequest1); } - offset = drsuapi_dissect_element_SecBuffer_buf_size(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_SecBuffer_buf_type(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_SecBuffer_buffer(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); @@ -11446,133 +17035,145 @@ 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: 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_SecBufferDesc_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_version, 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_SecBufferDesc_buff_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_buff_count, 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_SecBufferDesc_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBufferDesc_buffers__); + 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_SecBufferDesc_buffers__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_SecBuffer(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_SecBufferDesc_buffers,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_SecBufferDesc); - } - - 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); + 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; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } - -/* IDL: struct { */ -/* IDL: drsuapi_DsReplicaObjectListItem first_object; */ -/* IDL: [unique(1)] drsuapi_SecBufferDesc *client_creds; */ -/* 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_first_object,0); + 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_DsAddEntryRequest3_client_creds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_SecBufferDesc(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_enumeration_context, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_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_DsReplicaGetInfoRequest2); + } + + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep); - old_offset = offset; + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvb, offset, pinfo, tree, 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_DsAddEntryRequest3); - } + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryRequest3_first_object(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryRequest3_client_creds(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); @@ -11586,29 +17187,29 @@ drsuapi_dissect_struct_DsAddEntryRequest3(tvbuff_t *tvb _U_, int offset _U_, pac } -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryRequest2 req2; */ -/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryRequest3 req3; */ +/* 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_DsAddEntryRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req2,0); + offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req1,0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req3,0); + offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req2,0); return offset; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_DsReplicaGetInfoRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -11617,19 +17218,20 @@ drsuapi_dissect_DsAddEntryRequest(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_DsAddEntryRequest, &item, "drsuapi_DsAddEntryRequest"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest, &item, "drsuapi_DsReplicaGetInfoRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { - case 2: - offset = drsuapi_dissect_element_DsAddEntryRequest_req2(tvb, offset, pinfo, tree, di, drep); + case DRSUAPI_DS_REPLICA_GET_INFO: + offset = drsuapi_dissect_element_DsReplicaGetInfoRequest_req1(tvb, offset, pinfo, tree, di, drep); break; - case 3: - offset = drsuapi_dissect_element_DsAddEntryRequest_req3(tvb, offset, pinfo, tree, di, drep); + 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); @@ -11639,235 +17241,266 @@ drsuapi_dissect_DsAddEntryRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info } /* IDL: struct { */ -/* IDL: uint32 dsid; */ -/* IDL: WERROR extended_err; */ -/* IDL: uint32 extended_data; */ -/* IDL: uint16 problem; */ +/* 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_DsAddEntryErrorInfoX_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_dsid, 0); + 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_DsAddEntryErrorInfoX_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_err, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_data, 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_DsAddEntryErrorInfoX_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_problem, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - ALIGN_TO_4_BYTES; + 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); - 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_DsAddEntryErrorInfoX); - } +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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); - offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_problem(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn, false, &nga, &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: drsuapi_DsAttributeId attid; */ -/* IDL: uint32 is_val_returned; */ -/* IDL: drsuapi_DsAttributeValue attr_val; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_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_DsAddEntry_AttrErr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_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_DsAddEntry_AttrErr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_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_DsAddEntry_AttrErr_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsReplicaNeighbour_source_dsa_obj_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attid, 0); + 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_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_, uint8_t *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_, uint8_t *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_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_guid, NULL); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attr_val,0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_tmp_highest_usn, NULL); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsAddEntry_AttrErr_V1); - } - - offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(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); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_highest_usn, NULL); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_success); 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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_attempt); -/* IDL: struct { */ -/* IDL: [unique(1)] drsuapi_DsAddEntry_AttrErrListItem_V1 *next; */ -/* IDL: drsuapi_DsAddEntry_AttrErr_V1 err_data; */ -/* IDL: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_result_last_attempt, 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_AttrErrListItem_V1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbour); } - offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep); + 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_DsReplicaNeighbour_result_last_attempt(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(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_5_BYTES; + ALIGN_TO_8_BYTES; } return offset; @@ -11875,537 +17508,422 @@ drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvbuff_t *tvb _U_, int offs /* IDL: struct { */ -/* IDL: [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */ /* IDL: uint32 count; */ -/* IDL: drsuapi_DsAddEntry_AttrErrListItem_V1 first; */ +/* IDL: uint32 reserved; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaNeighbour array[*]; */ /* 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_count, 0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_id,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_reserved, 0); 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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_count, 0); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaNeighbourCtr_array_); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_first,0); + offset = drsuapi_dissect_struct_DsReplicaNeighbour(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaNeighbourCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplicaNeighbourCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_Attr_V1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbourCtr); } - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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: uint32 dsid; */ -/* IDL: WERROR extended_err; */ -/* IDL: uint32 extended_data; */ -/* IDL: uint16 problem; */ -/* IDL: [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_matched; */ +/* IDL: uint32 count; */ +/* IDL: uint32 reserved; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaCursor array[*]; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_dsid, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_count, 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_, uint8_t *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_, uint8_t *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_DsReplicaCursorCtr_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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - 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_DsAddEntryErrorInfo_Name_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_problem, 0); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaCursorCtr_array_); 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_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtr_array,0); 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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaCursorCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_id_matched,0); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaCursorCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplicaCursorCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_Name_V1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursorCtr); } - 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_DsReplicaCursorCtr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_problem(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaCursorCtr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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(83)] uint8 name_res; */ -/* IDL: [value(0)] uint8 unused_pad; */ -/* IDL: [value(0)] uint16 next_rdn; */ +/* 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_NameResOp_V1_name_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_name_res, 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_NameResOp_V1_unused_pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_unused_pad, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_next_rdn, 0); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - 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_NameResOp_V1); - } - - offset = drsuapi_dissect_element_NameResOp_V1_name_res(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_2_BYTES; - } + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_version, 0); return offset; } - -/* 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: } */ - -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_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_) +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_, uint8_t *drep _U_) { - uint16_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - return offset; -} - - -/* 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 = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_change_time); -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_, uint8_t *drep _U_, int hf_index _U_, uint8_t *param _U_) -{ - uint8_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } return offset; } - -/* IDL: struct { */ -/* IDL: [unique(1)] drsuapi_DsaAddressListItem_V1 *next; */ -/* IDL: [unique(1)] lsa_String *address; */ -/* 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_, uint8_t *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_, uint8_t *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 = 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_DsaAddressListItem_V1_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_usn, NULL); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset=dissect_ndr_counted_string(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsaAddressListItem_V1_address, 0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_local_usn, NULL); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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); - } - - offset = drsuapi_dissect_element_DsaAddressListItem_V1_next(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsaAddressListItem_V1_address(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; + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData); } - 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: [unique(1)] drsuapi_DsAddEntry_RefErrListItem_V1 *next; */ -/* IDL: uint32 is_choice_set; */ -/* IDL: drsuapi_DsAddEntry_ChoiceType choice; */ -/* 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_, uint8_t *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); - - return offset; -} + offset = drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_id_target,0); + offset = drsuapi_dissect_element_DsReplicaObjMetaData_version(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_NameResOp_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_op_state,0); + offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_alias, 0); + offset = drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvb, offset, pinfo, tree, di, drep); - 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_internal, 0); + proto_item_set_len(item, offset-old_offset); - return offset; -} -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_enum_DsAddEntry_RefType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_ref_type, 0); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list_count, 0); - return offset; -} +/* IDL: struct { */ +/* IDL: uint32 count; */ +/* IDL: uint32 reserved; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaObjMetaData array[*]; */ +/* IDL: } */ 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_, uint8_t *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_, uint8_t *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_DsReplicaObjMetaDataCtr_count, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_reserved, 0); 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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - 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_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_is_choice_set, 0); + offset = drsuapi_dissect_struct_DsReplicaObjMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_array,0); 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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = drsuapi_dissect_enum_DsAddEntry_ChoiceType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_choice, 0); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplicaObjMetaDataCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaObjMetaDataCtr); } - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(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_DsReplicaObjMetaDataCtr_reserved(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_DsReplicaObjMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); - 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); + proto_item_set_len(item, offset-old_offset); - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvb, offset, pinfo, tree, di, drep); +/* 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: } */ - offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } - -/* IDL: struct { */ -/* IDL: uint32 dsid; */ -/* IDL: WERROR extended_err; */ -/* IDL: uint32 extended_data; */ -/* IDL: drsuapi_DsAddEntry_RefErrListItem_V1 refer; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_dsid, 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_Referr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_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_Referr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_data, 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_Referr_V1_refer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_last_result, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -12417,16 +17935,18 @@ drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvbuff_t *tvb _U_, int offs 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_DsReplicaKccDsaFailure); } - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(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_DsReplicaKccDsaFailure_dsa_obj_guid(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_DsReplicaKccDsaFailure_first_failure(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_refer(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); @@ -12440,1226 +17960,993 @@ drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvbuff_t *tvb _U_, int offs } -/* 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: uint32 count; */ +/* IDL: uint32 reserved; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[*]; */ /* 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_, uint8_t *drep _U_) -{ - 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_DsAddEntryErrorInfo_name_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Name_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_name_err,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_count, 0); return offset; } 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_referral_err,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, 0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - 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_DsAddEntryErrorInfo_service_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_service_err,0); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_update_err,0); + offset = drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_array,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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_system_err,0); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - uint32_t level; + + offset = drsuapi_dissect_conformant_DsReplicaKccDsaFailuresCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaKccDsaFailuresCtr); } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvb, offset, pinfo, tree, di, drep); - switch(level) { - case 1: - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_attr_err(tvb, offset, pinfo, tree, di, drep); - break; + offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(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_DsReplicaKccDsaFailuresCtr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); - 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; + proto_item_set_len(item, offset-old_offset); - 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; + return offset; +} - case 7: - offset = drsuapi_dissect_element_DsAddEntryErrorInfo_system_err(tvb, offset, pinfo, tree, di, drep); - break; + +/* 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: } */ + +int +drsuapi_dissect_enum_DsReplicaOpType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; } - proto_item_set_len(item, offset-old_offset); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } + return offset; +} + + +/* 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: } */ +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_start); return offset; } -/* IDL: struct { */ -/* IDL: WERROR status; */ -/* IDL: drsuapi_DsAddEntry_DirErr dir_err; */ -/* IDL: [switch_is(dir_err)] drsuapi_DsAddEntryErrorInfo info; */ -/* IDL: } */ +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_serial_num, 0); + + return offset; +} 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaOp_priority(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsReplicaOp_priority, 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_, uint8_t *drep _U_, uint32_t *dir_err) +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_, uint8_t *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 = drsuapi_dissect_enum_DsReplicaOpType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_type, 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_, uint8_t *drep _U_, uint32_t *dir_err) +drsuapi_dissect_element_DsReplicaOp_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsAddEntryErrorInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info, *dir_err); + offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_options, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - uint32_t dir_err = 0; - 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_DsReplicaOp_nc_dn_, NDR_POINTER_UNIQUE, "Pointer to Nc Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_nc_dn); - ALIGN_TO_5_BYTES; + return offset; +} - old_offset = 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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - 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); - } + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_status(tvb, offset, pinfo, tree, di, drep); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_nc_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); - offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_dir_err(tvb, offset, pinfo, tree, di, drep, &dir_err); + return offset; +} - offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_info(tvb, offset, pinfo, tree, di, drep, &dir_err); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } - -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_ErrData_v1,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_DsAddEntry_ErrData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - 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); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } -/* IDL: struct { */ -/* IDL: GUID guid; */ -/* IDL: dom_sid28 sid; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_guid, NULL); + 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_DsReplicaObjectIdentifier2_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_sid); + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_guid, NULL); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaOp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaObjectIdentifier2); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOp); } - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_sid(tvb, offset, pinfo, tree, di, drep); - + offset = drsuapi_dissect_element_DsReplicaOp_operation_start(tvb, offset, pinfo, tree, di, drep); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } + offset = drsuapi_dissect_element_DsReplicaOp_operation_type(tvb, offset, pinfo, tree, di, drep); - return offset; -} + 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); -/* 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: } */ + offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *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); + offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_id,0); + offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep); - 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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_enum_DsAddEntry_DirErr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dir_err, 0); + proto_item_set_len(item, offset-old_offset); - 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dsid, 0); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_err, 0); - return offset; -} +/* IDL: struct { */ +/* IDL: NTTIME time; */ +/* IDL: uint32 count; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaOp array[*]; */ +/* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_data, 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_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_problem, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_count, 0); 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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_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_, uint8_t *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 = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_objects__); + offset = drsuapi_dissect_struct_DsReplicaOp(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOpCtr_array,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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaOpCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_objects,0); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = drsuapi_dissect_conformant_DsReplicaOpCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + 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_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, &nga_array); 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 err_ver; */ -/* IDL: [switch_is(err_ver)] 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_, uint8_t *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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_id,0); + 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_err_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *err_ver) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_ver, *err_ver); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name, false, &nga, &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_, uint8_t *drep _U_, uint32_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsAddEntry_ErrData(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data, *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_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_count, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_) +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_, uint8_t *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 = 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_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_objects__); + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_objects,0); + offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary, 0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - uint32_t err_ver = 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_DsAddEntryCtr3); - } - - offset = drsuapi_dissect_element_DsAddEntryCtr3_id(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_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); - - - 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_DsReplicaAttrValMetaData_deleted); return offset; } - -/* 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_DsAddEntryCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsAddEntryCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr2,0); + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_created); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsReplicaAttrValMetaData_version, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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); - + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_change_time); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _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 - }; - uint32_t 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); - } + offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_invocation_id, NULL); return offset; } - -/* IDL: struct { */ -/* IDL: uint32 taskID; */ -/* IDL: drsuapi_DsExecuteKCCFlags flags; */ -/* 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_taskID, 0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_usn, NULL); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_flags, 0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_local_usn, NULL); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaAttrValMetaData); } - offset = drsuapi_dissect_element_DsExecuteKCC1_taskID(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsExecuteKCC1_flags(tvb, offset, pinfo, tree, di, drep); - + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep); - proto_item_set_len(item, offset-old_offset); + 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_binary(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_deleted(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_created(tvb, offset, pinfo, tree, di, drep); -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsExecuteKCC1 ctr1; */ -/* IDL: } */ + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsExecuteKCC1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsExecuteKCCRequest_ctr1,0); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(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_DsExecuteKCCRequest, &item, "drsuapi_DsExecuteKCCRequest"); - } + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_local_usn(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); - 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; } - 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: } */ -int -drsuapi_dissect_enum_DsReplicaInfoType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } 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_DsReplicaAttrValMetaData 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_, uint8_t *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_, uint8_t *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_DsReplicaAttrValMetaDataCtr_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_, uint8_t *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_, uint8_t *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_DsReplicaAttrValMetaDataCtr_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_, uint8_t *drep _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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_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_, uint8_t *drep _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_, uint8_t *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_DsReplicaAttrValMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplicaAttrValMetaDataCtr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaAttrValMetaDataCtr); } - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_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_DsReplicaAttrValMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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: 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 count; */ /* IDL: uint32 enumeration_context; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaCursor2 array[*]; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_info_type, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_count, 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_enumeration_context, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaCursor2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaCursor2Ctr_array_); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaCursor2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_source_dsa_guid, NULL); + offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_array,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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaCursor2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_flags, 0); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + struct ndr_generic_array nga_array = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + offset = drsuapi_dissect_conformant_DsReplicaCursor2Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaCursor2Ctr); + } + + offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_count(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, &nga_array); + + + 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: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_element_DsReplicaGetInfoRequest2_value_dn_str(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _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_, uint8_t *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_DsReplicaCursor3_highest_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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - char *data; + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_last_sync_success); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_, uint8_t *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); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_enumeration_context, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn, false, &nga, &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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaCursor3); } - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_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_DsReplicaCursor3_highest_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_DsReplicaCursor3_last_sync_success(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_enumeration_context(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_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_DsReplicaCursor3 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_, uint8_t *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_, uint8_t *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_DsReplicaCursor3Ctr_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_, uint8_t *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_, uint8_t *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_DsReplicaCursor3Ctr_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest, &item, "drsuapi_DsReplicaGetInfoRequest"); - } - - 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); - - - 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: } */ - -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_, uint8_t *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_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaCursor3Ctr_array_); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = drsuapi_dissect_struct_DsReplicaCursor3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_array,0); 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_, uint8_t *drep _U_) +drsuapi_dissect_conformant_DsReplicaCursor3Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - 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_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} + struct ndr_generic_array nga_array = { .is_conformant = false, }; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_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_, uint8_t *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 = drsuapi_dissect_conformant_DsReplicaCursor3Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); - return offset; -} + ALIGN_TO_8_BYTES; -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_, uint8_t *drep _U_) -{ - char *data; + old_offset = offset; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address, 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_DsReplicaCursor3Ctr); + } - return offset; -} + offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_count(tvb, offset, pinfo, tree, di, drep); -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_, uint8_t *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 = drsuapi_dissect_element_DsReplicaCursor3Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep); - return offset; -} + offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); -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_, uint8_t *drep _U_) -{ - char *data; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + proto_item_set_len(item, offset-old_offset); + 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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_replica_flags, 0); - 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: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_reserved, 0); + 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_DsReplicaNeighbour_naming_context_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_obj_guid, NULL); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid, NULL); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_attribute_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_version, 0); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_guid, NULL); + 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_DsReplicaNeighbour_tmp_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_tmp_highest_usn, NULL); + 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_DsReplicaNeighbour_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_highest_usn, NULL); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_success); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_local_usn, NULL); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_attempt); + 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_DsReplicaNeighbour_result_last_attempt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_result_last_attempt, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, 0); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -13671,40 +18958,22 @@ 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_DsReplicaObjMetaData2); } - 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_DsReplicaObjMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2_version(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_highest_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_last_success(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_invocation_id(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_last_attempt(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_usn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbour_consecutive_sync_failures(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); @@ -13720,218 +18989,250 @@ 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: uint32 enumeration_context; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[*]; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_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_, uint8_t *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_, uint8_t *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_DsReplicaObjMetaData2Ctr_enumeration_context, 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_, uint8_t *drep _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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbourCtr_array_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array_); 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_, uint8_t *drep _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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaNeighbour(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_array,0); + offset = drsuapi_dissect_struct_DsReplicaObjMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = drsuapi_dissect_conformant_DsReplicaObjMetaData2Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + 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_DsReplicaNeighbourCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr); } - offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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 reserved; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaCursor array[*]; */ +/* 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_DsReplicaCursorCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_count, 0); + 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_DsReplicaCursorCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_reserved, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtr_array_); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtr_array,0); + 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; } -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - ALIGN_TO_8_BYTES; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - old_offset = offset; + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn, false, &nga, &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_DsReplicaCursorCtr); - } + return offset; +} - offset = drsuapi_dissect_element_DsReplicaCursorCtr_count(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2___ndr_size_binary, 0); - offset = drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvb, offset, pinfo, tree, di, drep); + return offset; +} - offset = drsuapi_dissect_element_DsReplicaCursorCtr_array(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary, 0); + return offset; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } +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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_deleted); 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_, uint8_t *drep _U_) +{ + offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_created); -/* 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: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_version, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsReplicaObjMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_version, 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_DsReplicaObjMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_change_time); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_usn, NULL); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_invocation_id, NULL); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_local_usn, NULL); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_usn, NULL); + 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_DsReplicaObjMetaData_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_local_usn, NULL); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -13943,20 +19244,32 @@ 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_DsReplicaAttrValMetaData2); } - offset = drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData_version(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep); + + 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); + + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -13972,167 +19285,186 @@ drsuapi_dissect_struct_DsReplicaObjMetaData(tvbuff_t *tvb _U_, int offset _U_, p /* IDL: struct { */ /* IDL: uint32 count; */ -/* IDL: uint32 reserved; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaObjMetaData array[*]; */ +/* IDL: uint32 enumeration_context; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 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_, uint8_t *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_, uint8_t *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_DsReplicaAttrValMetaData2Ctr_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_, uint8_t *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_, uint8_t *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_DsReplicaAttrValMetaData2Ctr_enumeration_context, 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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_array,0); + offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = drsuapi_dissect_conformant_DsReplicaAttrValMetaData2Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + 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_DsReplicaObjMetaDataCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr); } - offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_reserved(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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 *dsa_obj_dn; */ -/* IDL: GUID dsa_obj_guid; */ -/* IDL: NTTIME first_failure; */ -/* IDL: uint32 num_failures; */ -/* IDL: WERROR last_result; */ +/* 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_DsReplicaKccDsaFailure_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u1, NULL); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u2, 0); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + return 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u3, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid, NULL); + 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_DsReplicaKccDsaFailure_first_failure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_first_failure); + offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_time); 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_num_failures, 0); + 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_DsReplicaKccDsaFailure_last_result(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaConnection04_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_last_result, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u5, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaKccDsaFailure); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04); } - offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04_u1(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04_u2(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_first_failure(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04_u3(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04_bind_guid(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_last_result(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); if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; + ALIGN_TO_8_BYTES; } return offset; @@ -14140,268 +19472,213 @@ drsuapi_dissect_struct_DsReplicaKccDsaFailure(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_DsReplicaKccDsaFailure array[*]; */ +/* IDL: [size_is(count)] drsuapi_DsReplicaConnection04 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_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_DsReplicaKccDsaFailuresCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_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_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplicaConnection04Ctr_array_); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_array,0); + offset = drsuapi_dissect_struct_DsReplicaConnection04(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplicaConnection04Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplicaConnection04Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaKccDsaFailuresCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04Ctr); } - offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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_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: } */ - -int -drsuapi_dissect_enum_DsReplicaOpType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } return offset; } /* 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: [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_DsReplicaOp_operation_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_start); - - 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_serial_num, 0); - - 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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_priority, 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_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_enum_DsReplicaOpType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_type, 0); - - 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_options, 0); + 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_DsReplicaOp_nc_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplica06_str1, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_nc_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u1, 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u2, 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u3, 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u4, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplica06_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u5, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplica06_u6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_nc_obj_guid, NULL); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u6, NULL); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_guid, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u7, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaOp); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06); } - 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_DsReplica06_str1(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_operation_type(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06_u1(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_options(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06_u2(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_nc_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06_u3(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_DsReplica06_u4(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06_u5(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06_u6(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(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); if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; + ALIGN_TO_8_BYTES; } return offset; @@ -14409,757 +19686,716 @@ drsuapi_dissect_struct_DsReplicaOp(tvbuff_t *tvb _U_, int offset _U_, packet_inf /* IDL: struct { */ -/* IDL: NTTIME time; */ -/* IDL: uint32 count; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaOp array[*]; */ +/* IDL: [range(0,256)] uint32 count; */ +/* IDL: uint32 reserved; */ +/* IDL: [size_is(count)] drsuapi_DsReplica06 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_, uint8_t *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_, uint8_t *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_DsReplica06Ctr_count, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_reserved, 0); 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_, uint8_t *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_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOpCtr_array_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, drsuapi_dissect_element_DsReplica06Ctr_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaOp(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOpCtr_array,0); + offset = drsuapi_dissect_struct_DsReplica06(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplica06Ctr_array,0); + + return offset; +} + +static int +drsuapi_dissect_conformant_DsReplica06Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_array = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_5_BYTES; + offset = drsuapi_dissect_conformant_DsReplica06Ctr_array(tvb, offset, pinfo, parent_tree, di, drep, &nga_array); + + 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_DsReplicaOpCtr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06Ctr); } - offset = drsuapi_dissect_element_DsReplicaOpCtr_time(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06Ctr_count(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOpCtr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06Ctr_reserved(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaOpCtr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplica06Ctr_array(tvb, offset, pinfo, tree, di, drep, &nga_array); 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 *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(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_DsReplicaAttrValMetaData_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaAttrValMetaData_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name, 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_DsReplicaAttrValMetaData_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaAttrValMetaData_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = drsuapi_dissect_struct_DsReplicaCursorCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors,0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData___ndr_size_binary, 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_DsReplicaAttrValMetaData_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsReplicaObjMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary, 0); + 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; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_deleted); + offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures,0); return 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_created); + 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_DsReplicaAttrValMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_version, 0); + offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures,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_, uint8_t *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_, uint8_t *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_DsReplicaInfo_pendingops_, NDR_POINTER_UNIQUE, "Pointer to Pendingops (drsuapi_DsReplicaOpCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_pendingops); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_invocation_id, NULL); + offset = drsuapi_dissect_struct_DsReplicaOpCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_pendingops,0); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsReplicaInfo_attrvalmetadata_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata (drsuapi_DsReplicaAttrValMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata); 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_, uint8_t *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_DsReplicaAttrValMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_DsReplicaAttrValMetaData); - } - - 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_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_8_BYTES; - } + offset = drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata,0); return offset; } - -/* IDL: struct { */ -/* IDL: uint32 count; */ -/* IDL: uint32 enumeration_context; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[*]; */ -/* 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaInfo_cursors2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_count, 0); + 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); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaInfo_cursors2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context, 0); + offset = drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors2,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array_); + 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); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_array,0); + offset = drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors3,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsReplicaAttrValMetaDataCtr); - } - - 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_DsReplicaAttrValMetaDataCtr_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; - } + 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; } - -/* IDL: struct { */ -/* IDL: uint32 count; */ -/* IDL: uint32 enumeration_context; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaCursor2 array[*]; */ -/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_count, 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_DsReplicaCursor2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsReplicaInfo_attrvalmetadata2_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata2 (drsuapi_DsReplicaAttrValMetaData2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2Ctr_array_); + offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2,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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_array,0); + 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; } -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsReplicaCursor2Ctr); - } - - offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_count(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_8_BYTES; - } + offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_repsto,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_, uint8_t *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); -/* 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: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_invocation_id, NULL); + offset = drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_clientctx,0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_highest_usn, NULL); + 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_DsReplicaCursor3_last_sync_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_last_sync_success); + offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_udv1,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_, uint8_t *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_, uint8_t *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_DsReplicaInfo_srvoutgoingcalls_, NDR_POINTER_UNIQUE, "Pointer to Srvoutgoingcalls (drsuapi_DsReplica06Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls); 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = drsuapi_dissect_struct_DsReplica06Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - - ALIGN_TO_8_BYTES; + uint32_t 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_DsReplicaCursor3); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaInfo, &item, "drsuapi_DsReplicaInfo"); } - offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep); + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; - offset = drsuapi_dissect_element_DsReplicaCursor3_highest_usn(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_DsReplicaCursor3_last_sync_success(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_DsReplicaCursor3_source_dsa_obj_dn(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; + case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES: + offset = drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvb, offset, pinfo, tree, di, drep); + break; - proto_item_set_len(item, offset-old_offset); + 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; - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; + 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; + + 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: uint32 count; */ -/* IDL: uint32 enumeration_context; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaCursor3 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_DsReplicaCursor3Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_num_entries, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_enumeration_context, 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_DsReplicaCursor3Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor3Ctr_array_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__); return 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_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_, uint8_t *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_DsReplicaCursor3Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaCursor3Ctr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Ctr1); } - 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_DsGetMemberships2Ctr1_num_entries(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_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); 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: 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_DsGetMembershipsCtr1 ctr1; */ /* 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_, uint8_t *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_, uint8_t *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_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr_ctr1,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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - char *data; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_DsGetMemberships2Ctr, &item, "drsuapi_DsGetMemberships2Ctr"); + } - return offset; -} + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; + + 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_DsReplicaObjMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_version, 0); 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_DsReplicaObjMetaData2_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetMemberships2Request1_num_req, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_invocation_id, 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_DsReplicaObjMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_usn, NULL); + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_local_usn, NULL); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_DsGetMemberships2Request1_req_array__); 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_, uint8_t *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_, uint8_t *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); + 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_DsReplicaObjMetaData2_originating_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaObjMetaData2); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Request1); } - 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_DsGetMemberships2Request1_num_req(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(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_DsReplicaObjMetaData2 array[*]; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_DsGetMemberships2Request1 req1; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_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_DsReplicaObjMetaData2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Request, &item, "drsuapi_DsGetMemberships2Request"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_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_DsReplicaObjMetaData2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_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_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaObjMetaData2Ctr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsSiteCostInfo); } - 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_DsSiteCostInfo_error_code(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_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; @@ -15167,923 +20403,1276 @@ drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U /* 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: [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_DsReplicaAttrValMetaData2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_num_info, 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name, false, &data); - proto_item_append_text(tree, ": %s", data); + 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_DsReplicaAttrValMetaData2_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_QuerySitesByCostCtr1_info__); return 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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = drsuapi_dissect_struct_DsSiteCostInfo(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info,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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2___ndr_size_binary, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_flags_reserved, 0); 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_, uint8_t *drep _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + 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_QuerySitesByCostCtr1); + } + + offset = drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_QuerySitesByCostCtr1_info(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_5_BYTES; + } return offset; } + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostCtr1 ctr1; */ +/* IDL: } */ + 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_, uint8_t *drep _U_) +drsuapi_dissect_element_QuerySitesByCostCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary, 0); + offset = drsuapi_dissect_struct_QuerySitesByCostCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr_ctr1,0); 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_, uint8_t *drep _U_) +drsuapi_dissect_QuerySitesByCostCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_deleted); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostCtr, &item, "drsuapi_QuerySitesByCostCtr"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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: [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_DsReplicaAttrValMetaData2_created(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_created); + 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_DsReplicaAttrValMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_version, 0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_from, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_change_time); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_num_req, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_invocation_id, NULL); + 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_DsReplicaAttrValMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_usn, NULL); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_local_usn, NULL); + 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_DsReplicaAttrValMetaData2_originating_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_flags, 0); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_QuerySitesByCostRequest1); } - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvb, offset, pinfo, tree, di, drep); + proto_item_set_len(item, offset-old_offset); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } - 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); - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep); +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostRequest1 req1; */ +/* IDL: } */ - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_struct_QuerySitesByCostRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostRequest_req1,0); + return offset; +} - proto_item_set_len(item, offset-old_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostRequest, &item, "drsuapi_QuerySitesByCostRequest"); + } - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); + return offset; } - /* IDL: struct { */ -/* IDL: uint32 count; */ -/* IDL: uint32 enumeration_context; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[*]; */ +/* IDL: uint32 reserved; */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_count, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotionRequest1_reserved, 0); + + return offset; +} + +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_InitDemotionRequest1); + } + + 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_4_BYTES; + } return offset; } + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_InitDemotionRequest1 req1; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context, 0); + offset = drsuapi_dissect_struct_InitDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_InitDemotionRequest_req1,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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array_); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_InitDemotionRequest, &item, "drsuapi_InitDemotionRequest"); + } + + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); + return offset; } +/* IDL: struct { */ +/* IDL: WERROR op_error; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *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_InitDemotionCtr1_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_InitDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_InitDemotionCtr1); } - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_InitDemotionCtr1_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_InitDemotionCtr1 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u1, NULL); + offset = drsuapi_dissect_struct_InitDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_InitDemotionCtr_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_, uint8_t *drep _U_) +drsuapi_dissect_InitDemotionCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; + uint32_t level; - return offset; -} + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_InitDemotionCtr, &item, "drsuapi_InitDemotionCtr"); + } + + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u3, 0); return offset; } +/* IDL: struct { */ +/* IDL: uint32 flags; */ +/* IDL: GUID uuid_helper_dest; */ +/* IDL: [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */ +/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_guid, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotionRequest1_flags, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_nt_NTTIME_1sec(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_time); + 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_DsReplicaConnection04_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsReplicaConnection04_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u5, 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_DsReplicaConnection04(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_ReplicaDemotionRequest1); } - offset = drsuapi_dissect_element_DsReplicaConnection04_u1(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaConnection04_u2(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_ReplicaDemotionRequest1_flags(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReplicaDemotionRequest1_uuid_helper_dest(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplicaConnection04_u5(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: [range(0,10000)] uint32 count; */ -/* IDL: uint32 reserved; */ -/* IDL: [size_is(count)] drsuapi_DsReplicaConnection04 array[*]; */ +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_ReplicaDemotionRequest1 req1; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_count, 0); + offset = drsuapi_dissect_struct_ReplicaDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReplicaDemotionRequest_req1,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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_reserved, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; - return offset; -} + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReplicaDemotionRequest, &item, "drsuapi_ReplicaDemotionRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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_DsReplicaConnection04Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaConnection04Ctr_array_); return offset; } +/* IDL: struct { */ +/* IDL: WERROR op_error; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaConnection04(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_array,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotionCtr1_op_error, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_ReplicaDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_DsReplicaConnection04Ctr); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReplicaDemotionCtr1); } - offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReplicaDemotionCtr1_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: [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_ReplicaDemotionCtr1 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_, uint8_t *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_, uint8_t *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_ReplicaDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReplicaDemotionCtr_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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_DsReplica06_str1, false, &data); - proto_item_append_text(tree, ": %s", data); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; - return offset; -} + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReplicaDemotionCtr, &item, "drsuapi_ReplicaDemotionCtr"); + } -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u1, 0); + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_4_BYTES; - return offset; -} + 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); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u2, 0); 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_DsReplica06_u3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u3, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionRequest1_operations, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u4, 0); + 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_DsReplica06_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_FinishDemotionRequest1_script_base_, NDR_POINTER_UNIQUE, "Pointer to Script Base (uint16)",hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u6, NULL); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - return offset; -} + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); -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_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u7, 0); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_FinishDemotionRequest1); } - 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_FinishDemotionRequest1_operations(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplica06_u6(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_FinishDemotionRequest1_uuid_helper_dest(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplica06_u7(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_FinishDemotionRequest1_script_base(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_FinishDemotionRequest1 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_, uint8_t *drep _U_) +drsuapi_dissect_element_FinishDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_count, 0); + offset = drsuapi_dissect_struct_FinishDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_FinishDemotionRequest_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_, uint8_t *drep _U_) +drsuapi_dissect_FinishDemotionRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_FinishDemotionRequest, &item, "drsuapi_FinishDemotionRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_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 operations_done; */ +/* IDL: uint32 op_failed; */ +/* IDL: WERROR op_error; */ +/* 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplica06Ctr_array_); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionCtr1_operations_done, 0); return 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_, uint8_t *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_, uint8_t *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_FinishDemotionCtr1_op_failed, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionCtr1_op_error, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_FinishDemotionCtr1); } - offset = drsuapi_dissect_element_DsReplica06Ctr_count(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_FinishDemotionCtr1_operations_done(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplica06Ctr_reserved(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_FinishDemotionCtr1_op_failed(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsReplica06Ctr_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: [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_FinishDemotionCtr1 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_, uint8_t *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_, uint8_t *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_FinishDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_FinishDemotionCtr_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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; + uint32_t 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"); + } -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_, uint8_t *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); + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_4_BYTES; - return offset; -} + 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_DsReplicaInfo_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = drsuapi_dissect_struct_DsReplicaCursorCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors,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_DsReplicaInfo_objmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaInfo_objmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _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); + 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_DsReplicaInfo_connectfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_AddCloneDCRequest1_site, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return 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_, uint8_t *drep _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + 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_AddCloneDCRequest1); + } + + 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_DsReplicaInfo_linkfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_AddCloneDCRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures,0); + offset = drsuapi_dissect_struct_AddCloneDCRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_AddCloneDCRequest_req1,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_, uint8_t *drep _U_) +drsuapi_dissect_AddCloneDCRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_AddCloneDCRequest, &item, "drsuapi_AddCloneDCRequest"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_ALIGN_TO_5_BYTES; + + 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); + return offset; } +/* 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: } */ + 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_, uint8_t *drep _U_) +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_, uint8_t *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_AddCloneDCCtr1_clone_dc_name_, NDR_POINTER_UNIQUE, "Pointer to Clone Dc Name (uint16)",hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name); 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_, uint8_t *drep _U_) +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_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_) +drsuapi_dissect_element_AddCloneDCCtr1_site(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata,0); + 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_DsReplicaInfo_cursors2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_AddCloneDCCtr1_site_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_AddCloneDCCtr1_site, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors2,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_DsReplicaInfo_cursors3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_DsReplicaInfo_cursors3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors3,0); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password__); 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password, 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_, uint8_t *drep _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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; + + 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_AddCloneDCCtr1); + } + + offset = drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_AddCloneDCCtr1_site(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_5_BYTES; + } return offset; } + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_AddCloneDCCtr1 ctr1; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_struct_AddCloneDCCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_AddCloneDCCtr_ctr1,0); 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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2,0); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; + + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_AddCloneDCCtr, &item, "drsuapi_AddCloneDCCtr"); + } + + UNION_ALIGN_TO_5_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); + 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_DsReplicaInfo_repsto(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsReplicaInfo_repsto_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_repsto,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key_size, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_clientctx,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_DsReplicaInfo_udv1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_udv1,0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key, 0); 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_, uint8_t *drep _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + 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_WriteNgcKeyRequest1); + } + + offset = drsuapi_dissect_element_WriteNgcKeyRequest1_account(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_size(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_5_BYTES; + } return offset; } + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_WriteNgcKeyRequest1 req1; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsReplica06Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls,0); + offset = drsuapi_dissect_struct_WriteNgcKeyRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_WriteNgcKeyRequest_req1,0); return offset; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_WriteNgcKeyRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -16092,126 +21681,135 @@ drsuapi_dissect_DsReplicaInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaInfo, &item, "drsuapi_DsReplicaInfo"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_WriteNgcKeyRequest, &item, "drsuapi_WriteNgcKeyRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { - case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS: - offset = drsuapi_dissect_element_DsReplicaInfo_neighbours(tvb, offset, pinfo, tree, di, drep); + case 1: + offset = drsuapi_dissect_element_WriteNgcKeyRequest_req1(tvb, offset, pinfo, tree, di, drep); break; + } + proto_item_set_len(item, offset-old_offset); - 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; + return offset; +} - case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES: - offset = drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvb, offset, pinfo, tree, di, drep); - break; +/* IDL: struct { */ +/* IDL: WERROR ret_val; */ +/* IDL: } */ - case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES: - offset = drsuapi_dissect_element_DsReplicaInfo_linkfailures(tvb, offset, pinfo, tree, di, drep); - break; +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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyCtr1_ret_val, 0); - case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS: - offset = drsuapi_dissect_element_DsReplicaInfo_pendingops(tvb, offset, pinfo, tree, di, drep); - break; + return offset; +} - case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA: - offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvb, offset, pinfo, tree, di, drep); - break; +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; - case DRSUAPI_DS_REPLICA_INFO_CURSORS2: - offset = drsuapi_dissect_element_DsReplicaInfo_cursors2(tvb, offset, pinfo, tree, di, drep); - break; + ALIGN_TO_4_BYTES; - case DRSUAPI_DS_REPLICA_INFO_CURSORS3: - offset = drsuapi_dissect_element_DsReplicaInfo_cursors3(tvb, offset, pinfo, tree, di, drep); - break; + old_offset = offset; - case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2: - offset = drsuapi_dissect_element_DsReplicaInfo_objmetadata2(tvb, offset, pinfo, tree, di, drep); - break; + 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_WriteNgcKeyCtr1); + } - case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2: - offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2(tvb, offset, pinfo, tree, di, drep); - break; + offset = drsuapi_dissect_element_WriteNgcKeyCtr1_ret_val(tvb, offset, pinfo, tree, di, drep); - 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; + proto_item_set_len(item, offset-old_offset); - 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; + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; } - proto_item_set_len(item, offset-old_offset); - return offset; } -/* IDL: struct { */ -/* IDL: [range(0,10000)] uint32 num_entries; */ -/* IDL: [size_is(num_entries)] [unique(1)] drsuapi_DsGetMembershipsCtr1 **ctrl_array; */ + +/* IDL: [switch_type(uint32)] union { */ +/* IDL: [case(1)] [case(1)] drsuapi_WriteNgcKeyCtr1 ctr1; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_num_entries, 0); + offset = drsuapi_dissect_struct_WriteNgcKeyCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_WriteNgcKeyCtr_ctr1,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_, uint8_t *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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + uint32_t level; - return offset; -} + old_offset = offset; + if (parent_tree) { + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_WriteNgcKeyCtr, &item, "drsuapi_WriteNgcKeyCtr"); + } + + UNION_ALIGN_TO_4_BYTES; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + UNION_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); -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_, uint8_t *drep _U_) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__); return offset; } +/* IDL: struct { */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *account; */ +/* IDL: } */ + 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_, uint8_t *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_, uint8_t *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_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_DsGetMemberships2Ctr1_ctrl_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array,0); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_ReadNgcKeyRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -16223,12 +21821,10 @@ drsuapi_dissect_struct_DsGetMemberships2Ctr1(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_DsGetMemberships2Ctr1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReadNgcKeyRequest1); } - offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_num_entries(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReadNgcKeyRequest1_account(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -16243,19 +21839,19 @@ drsuapi_dissect_struct_DsGetMemberships2Ctr1(tvbuff_t *tvb _U_, int offset _U_, /* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */ +/* IDL: [case(1)] [case(1)] drsuapi_ReadNgcKeyRequest1 req1; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr_ctr1,0); + offset = drsuapi_dissect_struct_ReadNgcKeyRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyRequest_req1,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_ReadNgcKeyRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -16264,15 +21860,16 @@ drsuapi_dissect_DsGetMemberships2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_i old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Ctr, &item, "drsuapi_DsGetMemberships2Ctr"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyRequest, &item, "drsuapi_ReadNgcKeyRequest"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 1: - offset = drsuapi_dissect_element_DsGetMemberships2Ctr_ctr1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReadNgcKeyRequest_req1(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -16281,53 +21878,58 @@ drsuapi_dissect_DsGetMemberships2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_i return offset; } -/* IDL: struct { */ -/* IDL: [range(1,10000)] uint32 num_req; */ -/* IDL: [size_is(num_req)] [unique(1)] drsuapi_DsGetMembershipsRequest1 **req_array; */ +/* 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_DsGetMemberships2Request1_num_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Request1_num_req, 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_DsGetMemberships2Request1_req_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key_size, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array__); + 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_DsGetMemberships2Request1_req_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key__); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array,0); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key, 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_struct_ReadNgcKeyCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -16339,12 +21941,14 @@ drsuapi_dissect_struct_DsGetMemberships2Request1(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_DsGetMemberships2Request1); + tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReadNgcKeyCtr1); } - offset = drsuapi_dissect_element_DsGetMemberships2Request1_num_req(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ret_val(tvb, offset, pinfo, tree, di, drep); - offset = drsuapi_dissect_element_DsGetMemberships2Request1_req_array(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_size(tvb, offset, pinfo, tree, di, drep); + + offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); @@ -16359,19 +21963,19 @@ drsuapi_dissect_struct_DsGetMemberships2Request1(tvbuff_t *tvb _U_, int offset _ /* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_DsGetMemberships2Request1 req1; */ +/* IDL: [case(1)] [case(1)] drsuapi_ReadNgcKeyCtr1 ctr1; */ /* IDL: } */ 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsGetMemberships2Request1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request_req1,0); + offset = drsuapi_dissect_struct_ReadNgcKeyCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyCtr_ctr1,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +drsuapi_dissect_ReadNgcKeyCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -16380,15 +21984,16 @@ drsuapi_dissect_DsGetMemberships2Request(tvbuff_t *tvb _U_, int offset _U_, pack old_offset = offset; if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Request, &item, "drsuapi_DsGetMemberships2Request"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyCtr, &item, "drsuapi_ReadNgcKeyCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 1: - offset = drsuapi_dissect_element_DsGetMemberships2Request_req1(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_ReadNgcKeyCtr_ctr1(tvb, offset, pinfo, tree, di, drep); break; } proto_item_set_len(item, offset-old_offset); @@ -16396,576 +22001,593 @@ drsuapi_dissect_DsGetMemberships2Request(tvbuff_t *tvb _U_, int offset _U_, pack 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_, uint8_t *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); -/* IDL: struct { */ -/* IDL: WERROR error_code; */ -/* IDL: uint32 site_cost; */ -/* IDL: } */ + return offset; +} 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsSiteCostInfo_error_code, 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_DsSiteCostInfo_site_cost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsBind_bind_info_, NDR_POINTER_UNIQUE, "Pointer to Bind Info (drsuapi_DsBindInfoCtr)",hf_drsuapi_drsuapi_DsBind_bind_info); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + offset = drsuapi_dissect_struct_DsBindInfoCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBind_bind_info,0); - ALIGN_TO_4_BYTES; + return offset; +} - old_offset = 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_, uint8_t *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); - 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_DsBind_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_handle, 0); - offset = drsuapi_dissect_element_DsSiteCostInfo_site_cost(tvb, offset, pinfo, tree, di, drep); + 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: ); */ - proto_item_set_len(item, offset-old_offset); +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_, uint8_t *drep _U_) +{ + uint32_t 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); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } + 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_ext(status, &WERR_errors_ext, "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_DsBind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + 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_QuerySitesByCostCtr1_num_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_num_info, 0); + 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_QuerySitesByCostCtr1_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_element_QuerySitesByCostCtr1_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_DsUnbind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostCtr1_info__); + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); 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_, uint8_t *drep _U_) +drsuapi_dissect_DsUnbind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsSiteCostInfo(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info,0); - + 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_QuerySitesByCostCtr1_flags_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_flags_reserved, 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; } -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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_DsReplicaSync_bind_handle, 0); - ALIGN_TO_5_BYTES; + return offset; +} - old_offset = 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_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_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_QuerySitesByCostCtr1); - } + return offset; +} - offset = drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *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 = 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_element_DsReplicaSync_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_DsReplicaSyncRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_req, 0); + return offset; +} - proto_item_set_len(item, offset-old_offset); +/* 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_, uint8_t *drep _U_) +{ + uint32_t status; - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } + di->dcerpc_procedure_name="DsReplicaSync"; + 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_ext(status, &WERR_errors_ext, "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_, uint8_t *drep _U_) +drsuapi_dissect_DsReplicaSync_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_QuerySitesByCostCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr_ctr1,0); - + 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; } 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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_DsGetNCChanges_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *drep _U_) +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_, uint8_t *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_DsGetNCChanges_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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNCChanges_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_DsGetNCChanges_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_, uint8_t *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_, uint8_t *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_DsGetNCChanges_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetNCChangesRequest)",hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *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_, uint8_t *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_DsGetNCChangesRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *drep _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_, uint8_t *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_DsGetNCChanges_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *drep _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_, uint8_t *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_DsGetNCChanges_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_, uint8_t *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_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), 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_DsGetNCChanges_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetNCChangesCtr)",hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_flags, 0); + offset = drsuapi_dissect_DsGetNCChangesCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_QuerySitesByCostRequest1); - } - - offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvb, offset, pinfo, tree, di, drep); +/* 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: ); */ - offset = drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvb, offset, pinfo, tree, di, drep); +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_, uint8_t *drep _U_) +{ + uint32_t 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); - proto_item_set_len(item, offset-old_offset); + 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 (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_ext(status, &WERR_errors_ext, "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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_QuerySitesByCostRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostRequest_req1,0); - + 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_QuerySitesByCostRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t level; - - 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); - + 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; } -/* IDL: struct { */ -/* IDL: [charset(UTF16)] [unique(1)] uint16 *pwszAccount; */ -/* IDL: } */ - static int -drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount_, NDR_POINTER_UNIQUE, "Pointer to PwszAccount (uint16)",hf_drsuapi_drsuapi_ReadNgcKeyReqV1_pwszAccount); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle, 0); return offset; } static int -drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaUpdateRefs_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_drsuapi_drsuapi_ReadNgcKeyReqV1_pwszAccount, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level, 0); return offset; } -int -drsuapi_dissect_struct_ReadNgcKeyReqV1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + offset = drsuapi_dissect_DsReplicaUpdateRefsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_req, 0); - ALIGN_TO_5_BYTES; + return offset; +} - old_offset = 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: ); */ - 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_ReadNgcKeyReqV1); - } +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_, uint8_t *drep _U_) +{ + uint32_t status; - offset = drsuapi_dissect_element_ReadNgcKeyReqV1_pwszAccount(tvb, offset, pinfo, tree, di, drep); + 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); - proto_item_set_len(item, offset-old_offset); + return offset; +} +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_, uint8_t *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; +} - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } +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_, uint8_t *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_, uint8_t *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_ReadNgcKeyReqV1 V1; */ -/* IDL: } */ + return offset; +} static int -drsuapi_dissect_element_ReadNgcKeyReq_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_ReadNgcKeyReqV1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyReq_V1,0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_level, 0); return offset; } static int -drsuapi_dissect_ReadNgcKeyReq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - uint32_t 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_ReadNgcKeyReq, &item, "drsuapi_ReadNgcKeyReq"); - } + 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_ReadNgcKeyReq_V1(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_, uint8_t *drep _U_) +{ + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } -/* IDL: struct { */ -/* IDL: uint32 retVal; */ -/* IDL: [range(0,0xFFFF)] uint32 cNgcKey; */ -/* IDL: [size_is(cNgcKey)] [unique(1)] uint8 *pNgcKey; */ -/* IDL: } */ - static int -drsuapi_dissect_element_ReadNgcKeyReplyV1_retVal(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_retVal, 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_ReadNgcKeyReplyV1_cNgcKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_cNgcKey, 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; } static int -drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey_, NDR_POINTER_UNIQUE, "Pointer to PNgcKey (uint8)",hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_pNgcKey); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_bind_handle, 0); return offset; } static int -drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_element_DsReplicaDel_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_pNgcKey, false, &data); - proto_item_append_text(tree, ": %s", data); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_level, 0); return offset; } -int -drsuapi_dissect_struct_ReadNgcKeyReplyV1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) +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_, uint8_t *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_ReadNgcKeyReplyV1); - } - - offset = drsuapi_dissect_element_ReadNgcKeyReplyV1_retVal(tvb, offset, pinfo, tree, di, drep); - - offset = drsuapi_dissect_element_ReadNgcKeyReplyV1_cNgcKey(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_DsReplicaDelRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_req, 0); - offset = drsuapi_dissect_element_ReadNgcKeyReplyV1_pNgcKey(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_, uint8_t *drep _U_) +{ + uint32_t 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_5_BYTES; - } + if (status != 0) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } - -/* IDL: [switch_type(uint32)] union { */ -/* IDL: [case(1)] [case(1)] drsuapi_ReadNgcKeyReplyV1 V1; */ -/* IDL: } */ - static int -drsuapi_dissect_element_ReadNgcKeyReply_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_ReadNgcKeyReplyV1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyReply_V1,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_DsBind_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsBind_bind_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_guid, NULL); + 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_DsBind_bind_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_level, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_struct_DsBindInfoCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBind_bind_info,0); + offset = drsuapi_dissect_DsReplicaModRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_req, 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_element_DsBind_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +drsuapi_dissect_DsReplicaMod_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); 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_, uint8_t *drep _U_) +drsuapi_dissect_DsReplicaMod_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_handle, 0); - + 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_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_VERIFY_NAMES( */ +/* IDL: */ /* 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_, uint8_t *drep _U_) +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_, uint8_t *drep _U_) { uint32_t 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); - + di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status); if (status != 0) @@ -16975,114 +22597,104 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - 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); + di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES"; 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_, uint8_t *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_, uint8_t *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_DsGetMemberships_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *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_DsGetMemberships_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_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *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_DsGetMemberships_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMembershipsRequest)",hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *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_DsGetMembershipsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *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_DsGetMemberships_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships_level_out); return offset; } static int -drsuapi_dissect_element_DsReplicaSync_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_version, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *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_DsGetMemberships_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMembershipsCtr)",hf_drsuapi_drsuapi_DsGetMemberships_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaSyncRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_req, 0); + offset = drsuapi_dissect_DsGetMembershipsCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsReplicaSync( */ +/* IDL: WERROR drsuapi_DsGetMemberships( */ /* IDL: [in] [ref] policy_handle *bind_handle, */ -/* IDL: [in] uint32 version, */ -/* IDL: [in] [ref] [switch_is(version)] drsuapi_DsReplicaSyncRequest *req */ +/* 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: ); */ 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_, uint8_t *drep _U_) +drsuapi_dissect_DsGetMemberships_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsReplicaSync"; + 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); + + offset = drsuapi_dissect_element_DsGetMemberships_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) @@ -17092,108 +22704,133 @@ 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_, uint8_t *drep _U_) +drsuapi_dissect_DsGetMemberships_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsReplicaSync"; - offset = drsuapi_dissect_element_DsReplicaSync_bind_handle(tvb, offset, pinfo, tree, di, drep); + 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_DsReplicaSync_version(tvb, offset, pinfo, tree, 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_DsReplicaSync_req(tvb, offset, pinfo, tree, 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: ); */ + 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_, uint8_t *drep _U_) +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_, uint8_t *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); + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle, 0); + 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_, uint8_t *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); 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_, uint8_t *drep _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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level, 0); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle, 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_, uint8_t *drep _U_) +drsuapi_dissect_element_DsGetNT4ChangeLog_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetNCChangesRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_req, 0); + 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_DsGetNCChanges_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = drsuapi_dissect_DsGetNT4ChangeLogRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level_out, 0); + 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_DsGetNCChanges_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetNCChangesCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_ctr, 0); + 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; } -/* IDL: WERROR drsuapi_DsGetNCChanges( */ +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_DsGetNT4ChangeLogInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info, 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_DsGetNCChangesRequest *req, */ +/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *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_DsGetNT4ChangeLogInfo *info */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsGetNCChanges"; - offset = drsuapi_dissect_element_DsGetNCChanges_level_out(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_DsGetNCChanges_ctr(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); @@ -17205,127 +22842,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsGetNCChanges"; - offset = drsuapi_dissect_element_DsGetNCChanges_bind_handle(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_DsGetNCChanges_level(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_DsGetNCChanges_req(tvb, offset, pinfo, tree, 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_DsReplicaUpdateRefs_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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); - - 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle, 0); + 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_DsReplicaUpdateRefs_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level, 0); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_bind_handle, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaUpdateRefsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_req, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_level, 0); 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_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); + 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_DsReplicaUpdateRefs_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + offset = drsuapi_dissect_DsNameRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_req, 0); + 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_, uint8_t *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_, uint8_t *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_DsCrackNames_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsCrackNames_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_, uint8_t *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_, uint8_t *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_DsCrackNames_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_, uint8_t *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_, uint8_t *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_DsCrackNames_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsNameCtr)",hf_drsuapi_drsuapi_DsCrackNames_ctr); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaAddRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_req, 0); + offset = drsuapi_dissect_DsNameCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsReplicaAdd( */ +/* IDL: WERROR drsuapi_DsCrackNames( */ /* 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_DsNameRequest *req, */ +/* IDL: [out] [ref] uint32 *level_out, */ +/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsNameCtr *ctr */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsReplicaAdd"; + 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) @@ -17335,158 +22955,110 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsReplicaAdd"; - offset = drsuapi_dissect_element_DsReplicaAdd_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_DsReplicaAdd_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_DsReplicaAdd_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_DsReplicaDel_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsReplicaDel_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_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_DsReplicaDel_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_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_DsReplicaDel_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsWriteAccountSpn_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsWriteAccountSpnRequest)",hf_drsuapi_drsuapi_DsWriteAccountSpn_req); 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_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); - - return offset; -} + offset = drsuapi_dissect_DsWriteAccountSpnRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_req, 0); -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_, uint8_t *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); 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_, uint8_t *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_, uint8_t *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_DsWriteAccountSpn_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsWriteAccountSpn_level_out); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_bind_handle, 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_DsReplicaMod_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsWriteAccountSpn_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsWriteAccountSpnResult)",hf_drsuapi_drsuapi_DsWriteAccountSpn_res); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaModRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_req, 0); + offset = drsuapi_dissect_DsWriteAccountSpnResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_res, 0); return offset; } -/* IDL: WERROR drsuapi_DsReplicaMod( */ +/* IDL: WERROR drsuapi_DsWriteAccountSpn( */ /* IDL: [in] [ref] policy_handle *bind_handle, */ /* IDL: [in] uint32 level, */ -/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaModRequest req */ +/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req, */ +/* IDL: [out] [ref] uint32 *level_out, */ +/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); - - 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_, uint8_t *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); + 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); - return offset; -} - -/* IDL: WERROR DRSUAPI_VERIFY_NAMES( */ -/* IDL: */ -/* 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_, uint8_t *drep _U_) -{ - uint32_t status; + offset = drsuapi_dissect_element_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); - di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status); if (status != 0) @@ -17496,102 +23068,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES"; + 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_DsWriteAccountSpn_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 = 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_, uint8_t *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_, uint8_t *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_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_DsGetMemberships_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsRemoveDSServerRequest)",hf_drsuapi_drsuapi_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetMembershipsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_req, 0); + offset = drsuapi_dissect_DsRemoveDSServerRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_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_, uint8_t *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_, uint8_t *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_DsRemoveDSServer_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsRemoveDSServerResult)",hf_drsuapi_drsuapi_DsRemoveDSServer_res); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetMembershipsCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_ctr, 0); + offset = drsuapi_dissect_DsRemoveDSServerResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_res, 0); return offset; } -/* IDL: WERROR drsuapi_DsGetMemberships( */ +/* IDL: WERROR drsuapi_DsRemoveDSServer( */ /* 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_DsRemoveDSServerRequest *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_DsRemoveDSServerResult *res */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsGetMemberships"; - offset = drsuapi_dissect_element_DsGetMemberships_level_out(tvb, offset, pinfo, tree, di, drep); + 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_DsGetMemberships_ctr(tvb, offset, pinfo, tree, 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); @@ -17603,28 +23181,28 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsGetMemberships"; - offset = drsuapi_dissect_element_DsGetMemberships_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_DsGetMemberships_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_DsGetMemberships_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_INTER_DOMAIN_MOVE( */ +/* IDL: WERROR DRSUAPI_REMOVE_DS_DOMAIN( */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE"; + di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status); if (status != 0) @@ -17634,102 +23212,102 @@ drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_response(tvbuff_t *tvb _U_, int offset } 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE"; + di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN"; 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_, uint8_t *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_, uint8_t *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 = 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; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle, 0); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_bind_handle, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level, 0); 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_, uint8_t *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_, uint8_t *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 = 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_DsGetNT4ChangeLog_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetNT4ChangeLogRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_req, 0); + offset = drsuapi_dissect_DsGetDCInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_req, 0); 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_, uint8_t *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_, uint8_t *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); + 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_DsGetNT4ChangeLog_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level_out, 0); + offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level_out, 0); 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_, uint8_t *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_, uint8_t *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_DsGetDomainControllerInfo_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetDCInfoCtr)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetNT4ChangeLogInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info, 0); + offset = drsuapi_dissect_DsGetDCInfoCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsGetNT4ChangeLog( */ +/* IDL: WERROR drsuapi_DsGetDomainControllerInfo( */ /* 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: [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_DsGetNT4ChangeLog_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsGetNT4ChangeLog"; - offset = drsuapi_dissect_element_DsGetNT4ChangeLog_level_out(tvb, offset, pinfo, tree, di, drep); + 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_DsGetNT4ChangeLog_info(tvb, offset, pinfo, tree, 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); @@ -17741,100 +23319,108 @@ drsuapi_dissect_DsGetNT4ChangeLog_response(tvbuff_t *tvb _U_, int offset _U_, pa } 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsGetNT4ChangeLog"; - offset = drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle(tvb, offset, pinfo, tree, di, drep); + 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_DsGetNT4ChangeLog_level(tvb, offset, pinfo, tree, 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_DsGetNT4ChangeLog_req(tvb, offset, pinfo, tree, 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_DsCrackNames_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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 = 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_DsCrackNames_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_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_DsCrackNames_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_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_DsCrackNames_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsAddEntry_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsAddEntryRequest)",hf_drsuapi_drsuapi_DsAddEntry_req); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsNameRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_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_DsCrackNames_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsCrackNames_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_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_DsCrackNames_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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; } -/* IDL: WERROR drsuapi_DsCrackNames( */ +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_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_DsAddEntryCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ctr, 0); + + return offset; +} + +/* IDL: WERROR drsuapi_DsAddEntry( */ /* IDL: [in] [ref] policy_handle *bind_handle, */ /* IDL: [in] uint32 level, */ -/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsNameRequest *req, */ +/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsAddEntryRequest *req, */ /* IDL: [out] [ref] uint32 *level_out, */ -/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsNameCtr *ctr */ +/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsCrackNames"; - offset = drsuapi_dissect_element_DsCrackNames_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_DsCrackNames_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); @@ -17846,110 +23432,70 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsCrackNames"; - offset = drsuapi_dissect_element_DsCrackNames_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_DsCrackNames_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_DsCrackNames_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; } 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_, uint8_t *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); - - 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_, uint8_t *drep _U_) -{ - 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_DsWriteAccountSpn_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_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_, uint8_t *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); - - 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsWriteAccountSpnRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_req, 0); + 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); 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_bind_handle, 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_, uint8_t *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_, uint8_t *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_DsExecuteKCC_level, 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_, uint8_t *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_, uint8_t *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_DsExecuteKCC_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsExecuteKCCRequest)",hf_drsuapi_drsuapi_DsExecuteKCC_req); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsWriteAccountSpnResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_res, 0); + offset = drsuapi_dissect_DsExecuteKCCRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_req, 0); return offset; } -/* IDL: WERROR drsuapi_DsWriteAccountSpn( */ +/* IDL: WERROR drsuapi_DsExecuteKCC( */ /* IDL: [in] [ref] policy_handle *bind_handle, */ /* IDL: [in] uint32 level, */ -/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req, */ -/* IDL: [out] [ref] uint32 *level_out, */ -/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res */ +/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsExecuteKCCRequest *req */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - 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_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, di, drep); - offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); - + di->dcerpc_procedure_name="DsExecuteKCC"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status); if (status != 0) @@ -17959,108 +23505,108 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsWriteAccountSpn"; - offset = drsuapi_dissect_element_DsWriteAccountSpn_bind_handle(tvb, offset, pinfo, tree, di, drep); + 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_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, 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_DsWriteAccountSpn_req(tvb, offset, pinfo, tree, 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_DsRemoveDSServer_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + 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_DsRemoveDSServer_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_bind_handle, 0); + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_bind_handle, 0); return offset; } 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level, 0); + offset = drsuapi_dissect_enum_DsReplicaGetInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_level, 0); 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_, uint8_t *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_, uint8_t *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); + 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_DsRemoveDSServer_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsRemoveDSServerRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_req, 0); + offset = drsuapi_dissect_DsReplicaGetInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_req, 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_, uint8_t *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_, uint8_t *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 = 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_DsRemoveDSServer_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level_out, 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_DsRemoveDSServer_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsReplicaGetInfo_info_, NDR_POINTER_REF, "Pointer to Info (drsuapi_DsReplicaInfo)",hf_drsuapi_drsuapi_DsReplicaGetInfo_info); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsRemoveDSServerResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_res, 0); + offset = drsuapi_dissect_DsReplicaInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info, 0); return offset; } -/* IDL: WERROR drsuapi_DsRemoveDSServer( */ +/* IDL: WERROR drsuapi_DsReplicaGetInfo( */ /* 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: [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_DsRemoveDSServer_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsRemoveDSServer"; - offset = drsuapi_dissect_element_DsRemoveDSServer_level_out(tvb, offset, pinfo, tree, di, drep); + 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); - offset = drsuapi_dissect_element_DsRemoveDSServer_res(tvb, offset, pinfo, tree, di, drep); + offset = drsuapi_dissect_element_DsReplicaGetInfo_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); @@ -18072,28 +23618,28 @@ drsuapi_dissect_DsRemoveDSServer_response(tvbuff_t *tvb _U_, int offset _U_, pac } 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsRemoveDSServer"; - offset = drsuapi_dissect_element_DsRemoveDSServer_bind_handle(tvb, offset, pinfo, tree, di, drep); + 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_DsRemoveDSServer_level(tvb, offset, pinfo, tree, 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_DsRemoveDSServer_req(tvb, offset, pinfo, tree, 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_REMOVE_DS_DOMAIN( */ +/* IDL: WERROR DRSUAPI_ADD_SID_HISTORY( */ /* IDL: */ /* 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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN"; + 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) @@ -18103,102 +23649,102 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN"; + di->dcerpc_procedure_name="DRSUAPI_ADD_SID_HISTORY"; 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_, uint8_t *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_, uint8_t *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_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_DsGetDomainControllerInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetMemberships2_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_, uint8_t *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_, uint8_t *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_DsGetMemberships2_level, 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_, uint8_t *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_, uint8_t *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_DsGetMemberships2_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMemberships2Request)",hf_drsuapi_drsuapi_DsGetMemberships2_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetDCInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_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_DsGetDomainControllerInfo_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_DsGetMemberships2_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships2_level_out); 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_, uint8_t *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_, uint8_t *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_DsGetMemberships2_level_out, 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_, uint8_t *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_, uint8_t *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_DsGetMemberships2_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMemberships2Ctr)",hf_drsuapi_drsuapi_DsGetMemberships2_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetDCInfoCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr, 0); + offset = drsuapi_dissect_DsGetMemberships2Ctr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsGetDomainControllerInfo( */ +/* IDL: WERROR drsuapi_DsGetMemberships2( */ /* 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] [ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req, */ +/* IDL: [out] [ref] uint32 *level_out, */ +/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsGetDomainControllerInfo"; - offset = drsuapi_dissect_element_DsGetDomainControllerInfo_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_DsGetDomainControllerInfo_ctr(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); @@ -18210,108 +23756,158 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsGetDomainControllerInfo"; - offset = drsuapi_dissect_element_DsGetDomainControllerInfo_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_DsGetDomainControllerInfo_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_DsGetDomainControllerInfo_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_DsAddEntry_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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); + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_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_DRSUAPI_GET_OBJECT_EXISTENCE_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + uint32_t 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level, 0); + 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_, uint8_t *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); 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_, uint8_t *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_, uint8_t *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 = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_bind_handle, 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsAddEntryRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_req, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level, 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_, uint8_t *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_, uint8_t *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_QuerySitesByCost_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_QuerySitesByCostRequest)",hf_drsuapi_drsuapi_QuerySitesByCost_req); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level_out, 0); + offset = drsuapi_dissect_QuerySitesByCostRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_req, 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_, uint8_t *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_, uint8_t *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_QuerySitesByCost_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_QuerySitesByCost_level_out); 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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsAddEntryCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ctr, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level_out, 0); return offset; } -/* IDL: WERROR drsuapi_DsAddEntry( */ +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_, uint8_t *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_element_QuerySitesByCost_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_QuerySitesByCostCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_ctr, 0); + + return offset; +} + +/* IDL: WERROR drsuapi_QuerySitesByCost( */ /* IDL: [in] [ref] policy_handle *bind_handle, */ /* IDL: [in] uint32 level, */ -/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsAddEntryRequest *req, */ +/* IDL: [in] [ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req, */ /* IDL: [out] [ref] uint32 *level_out, */ -/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr */ +/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsAddEntry"; - offset = drsuapi_dissect_element_DsAddEntry_level_out(tvb, offset, pinfo, tree, di, drep); + 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_DsAddEntry_ctr(tvb, offset, pinfo, tree, 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); @@ -18323,70 +23919,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsAddEntry"; - offset = drsuapi_dissect_element_DsAddEntry_bind_handle(tvb, offset, pinfo, tree, di, drep); + 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_DsAddEntry_level(tvb, offset, pinfo, tree, 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_DsAddEntry_req(tvb, offset, pinfo, tree, 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_DsExecuteKCC_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsExecuteKCC_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_InitDemotion_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_, uint8_t *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_, uint8_t *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_InitDemotion_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_, uint8_t *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_, uint8_t *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_InitDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_InitDemotionRequest)",hf_drsuapi_drsuapi_InitDemotion_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsExecuteKCCRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_req, 0); + offset = drsuapi_dissect_InitDemotionRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_req, 0); return offset; } -/* IDL: WERROR drsuapi_DsExecuteKCC( */ +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_, uint8_t *drep _U_) +{ + 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_InitDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_out_version, 0); + + return offset; +} + +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_, uint8_t *drep _U_) +{ + 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_InitDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = drsuapi_dissect_InitDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_ctr, 0); + + return offset; +} + +/* IDL: WERROR drsuapi_InitDemotion( */ /* 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_InitDemotionRequest *req, */ +/* IDL: [out] [ref] uint32 *out_version, */ +/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_InitDemotionCtr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsExecuteKCC"; + 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_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); if (status != 0) @@ -18396,108 +24032,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsExecuteKCC"; - offset = drsuapi_dissect_element_DsExecuteKCC_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_DsExecuteKCC_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_DsExecuteKCC_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_DsReplicaGetInfo_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_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_DsReplicaGetInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_ReplicaDemotion_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_, uint8_t *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_, uint8_t *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_ReplicaDemotion_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_, uint8_t *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_, uint8_t *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_ReplicaDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_ReplicaDemotionRequest)",hf_drsuapi_drsuapi_ReplicaDemotion_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaGetInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_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_DsReplicaGetInfo_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_ReplicaDemotion_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_ReplicaDemotion_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_, uint8_t *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_, uint8_t *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_ReplicaDemotion_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_, uint8_t *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_, uint8_t *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_ReplicaDemotion_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_ReplicaDemotionCtr)",hf_drsuapi_drsuapi_ReplicaDemotion_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsReplicaInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info, 0); + offset = drsuapi_dissect_ReplicaDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsReplicaGetInfo( */ +/* IDL: WERROR drsuapi_ReplicaDemotion( */ /* 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_ReplicaDemotionRequest *req, */ +/* IDL: [out] [ref] uint32 *out_version, */ +/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_ReplicaDemotionCtr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsReplicaGetInfo"; - offset = drsuapi_dissect_element_DsReplicaGetInfo_info_type(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_DsReplicaGetInfo_info(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); @@ -18509,133 +24145,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsReplicaGetInfo"; - offset = drsuapi_dissect_element_DsReplicaGetInfo_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_DsReplicaGetInfo_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_DsReplicaGetInfo_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; } -/* 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_, uint8_t *drep _U_) -{ - uint32_t 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_ext(status, &WERR_errors_ext, "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_, uint8_t *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_, uint8_t *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_, uint8_t *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_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_DsGetMemberships2_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_FinishDemotion_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_, uint8_t *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_, uint8_t *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_FinishDemotion_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_, uint8_t *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_, uint8_t *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_FinishDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_FinishDemotionRequest)",hf_drsuapi_drsuapi_FinishDemotion_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetMemberships2Request(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_req, 0); + offset = drsuapi_dissect_FinishDemotionRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_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_, uint8_t *drep _U_) +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_, uint8_t *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_FinishDemotion_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_FinishDemotion_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_, uint8_t *drep _U_) +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_, uint8_t *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_FinishDemotion_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_, uint8_t *drep _U_) +drsuapi_dissect_element_FinishDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_FinishDemotion_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_FinishDemotionCtr)",hf_drsuapi_drsuapi_FinishDemotion_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_, uint8_t *drep _U_) +drsuapi_dissect_element_FinishDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = drsuapi_dissect_DsGetMemberships2Ctr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_ctr, 0); + offset = drsuapi_dissect_FinishDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_DsGetMemberships2( */ +/* IDL: WERROR drsuapi_FinishDemotion( */ /* 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_FinishDemotionRequest *req, */ +/* IDL: [out] [ref] uint32 *out_version, */ +/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_FinishDemotionCtr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="DsGetMemberships2"; - offset = drsuapi_dissect_element_DsGetMemberships2_level_out(tvb, offset, pinfo, tree, di, drep); + 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_DsGetMemberships2_ctr(tvb, offset, pinfo, tree, 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); @@ -18647,158 +24258,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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="DsGetMemberships2"; - offset = drsuapi_dissect_element_DsGetMemberships2_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_DsGetMemberships2_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_DsGetMemberships2_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; } -/* 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_, uint8_t *drep _U_) -{ - uint32_t 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_ext(status, &WERR_errors_ext, "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_, uint8_t *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_, uint8_t *drep _U_) -{ - uint32_t 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_ext(status, &WERR_errors_ext, "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_, uint8_t *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_, uint8_t *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_, uint8_t *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_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_QuerySitesByCost_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_AddCloneDC_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_, uint8_t *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_, uint8_t *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_AddCloneDC_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_, uint8_t *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_, uint8_t *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_AddCloneDC_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_AddCloneDCRequest)",hf_drsuapi_drsuapi_AddCloneDC_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_QuerySitesByCostRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_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_QuerySitesByCost_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *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_AddCloneDC_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_AddCloneDC_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_, uint8_t *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_, uint8_t *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_AddCloneDC_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_, uint8_t *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_, uint8_t *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_AddCloneDC_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_AddCloneDCCtr)",hf_drsuapi_drsuapi_AddCloneDC_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_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_QuerySitesByCostCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_ctr, 0); + offset = drsuapi_dissect_AddCloneDCCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_ctr, 0); return offset; } -/* IDL: WERROR drsuapi_QuerySitesByCost( */ +/* IDL: WERROR drsuapi_AddCloneDC( */ /* 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_AddCloneDCRequest *req, */ +/* IDL: [out] [ref] uint32 *out_version, */ +/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_AddCloneDCCtr *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_, uint8_t *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_, uint8_t *drep _U_) { uint32_t status; - di->dcerpc_procedure_name="QuerySitesByCost"; - offset = drsuapi_dissect_element_QuerySitesByCost_level_out(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_QuerySitesByCost_ctr(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); @@ -18810,120 +24371,96 @@ 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_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="QuerySitesByCost"; - offset = drsuapi_dissect_element_QuerySitesByCost_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_QuerySitesByCost_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_QuerySitesByCost_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_InitDemotion( */ -/* IDL: */ -/* IDL: ); */ - static int -drsuapi_dissect_InitDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t status; - - di->dcerpc_procedure_name="InitDemotion"; - 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); + 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_InitDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="InitDemotion"; + offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_bind_handle, 0); + return offset; } -/* IDL: WERROR drsuapi_ReplicaDemotion( */ -/* IDL: */ -/* IDL: ); */ - static int -drsuapi_dissect_ReplicaDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t status; - - di->dcerpc_procedure_name="ReplicaDemotion"; - 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_in_version, 0); return offset; } static int -drsuapi_dissect_ReplicaDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="ReplicaDemotion"; + 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; } -/* IDL: WERROR drsuapi_FinishDemotion( */ -/* IDL: */ -/* IDL: ); */ - static int -drsuapi_dissect_FinishDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t status; - - di->dcerpc_procedure_name="FinishDemotion"; - 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); + offset = drsuapi_dissect_WriteNgcKeyRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_req, 0); return offset; } static int -drsuapi_dissect_FinishDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="FinishDemotion"; + 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; } -/* IDL: WERROR drsuapi_AddCloneDC( */ -/* IDL: */ -/* IDL: ); */ - static int -drsuapi_dissect_AddCloneDC_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - uint32_t status; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_out_version, 0); - di->dcerpc_procedure_name="AddCloneDC"; - 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_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); +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_, uint8_t *drep _U_) +{ + 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_AddCloneDC_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - di->dcerpc_procedure_name="AddCloneDC"; + offset = drsuapi_dissect_WriteNgcKeyCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_ctr, 0); + return offset; } /* IDL: WERROR drsuapi_WriteNgcKey( */ -/* IDL: */ +/* IDL: [in] [ref] policy_handle *bind_handle, */ +/* 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 @@ -18932,6 +24469,12 @@ drsuapi_dissect_WriteNgcKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_i uint32_t status; 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_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); if (status != 0) @@ -18944,87 +24487,93 @@ static int drsuapi_dissect_WriteNgcKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { 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_WriteNgcKey_in_version(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, 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; } static int -drsuapi_dissect_element_ReadNgcKey_hDrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_hDrs_, NDR_POINTER_REF, "Pointer to HDrs (policy_handle)",hf_drsuapi_drsuapi_ReadNgcKey_hDrs); + 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_ReadNgcKey_hDrs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_hDrs, 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_ReadNgcKey_inVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_inVersion, 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_ReadNgcKey_ngcReq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_ngcReq_, NDR_POINTER_REF, "Pointer to NgcReq (drsuapi_ReadNgcKeyReq)",hf_drsuapi_drsuapi_ReadNgcKey_ngcReq); + 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_ReadNgcKey_ngcReq_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_ReadNgcKeyReq(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_ngcReq, 0); + offset = drsuapi_dissect_ReadNgcKeyRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_req, 0); return offset; } static int -drsuapi_dissect_element_ReadNgcKey_pOutVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_pOutVersion_, NDR_POINTER_REF, "Pointer to POutVersion (uint32)",hf_drsuapi_drsuapi_ReadNgcKey_pOutVersion); + 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_ReadNgcKey_pOutVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_pOutVersion, 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_ReadNgcKey_ngcReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_ngcReply_, NDR_POINTER_REF, "Pointer to NgcReply (drsuapi_ReadNgcKeyReply)",hf_drsuapi_drsuapi_ReadNgcKey_ngcReply); + 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_ReadNgcKey_ngcReply_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *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_, uint8_t *drep _U_) { - offset = drsuapi_dissect_ReadNgcKeyReply(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_ngcReply, 0); + offset = drsuapi_dissect_ReadNgcKeyCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_ctr, 0); return offset; } /* IDL: WERROR drsuapi_ReadNgcKey( */ -/* IDL: [in] [ref] policy_handle *hDrs, */ -/* IDL: [in] uint32 inVersion, */ -/* IDL: [in] [ref] [switch_is(inVersion)] drsuapi_ReadNgcKeyReq *ngcReq, */ -/* IDL: [out] [ref] uint32 *pOutVersion, */ -/* IDL: [out] [ref] [switch_is(*pOutVersion)] drsuapi_ReadNgcKeyReply *ngcReply */ +/* IDL: [in] [ref] policy_handle *bind_handle, */ +/* 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 @@ -19033,10 +24582,10 @@ drsuapi_dissect_ReadNgcKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_in uint32_t status; di->dcerpc_procedure_name="ReadNgcKey"; - offset = drsuapi_dissect_element_ReadNgcKey_pOutVersion(tvb, offset, pinfo, tree, di, drep); + 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_ReadNgcKey_ngcReply(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); @@ -19051,11 +24600,11 @@ static int drsuapi_dissect_ReadNgcKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { di->dcerpc_procedure_name="ReadNgcKey"; - offset = drsuapi_dissect_element_ReadNgcKey_hDrs(tvb, offset, pinfo, tree, di, drep); + 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_ReadNgcKey_inVersion(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_ReadNgcKey_ngcReq(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; } @@ -19130,6 +24679,36 @@ static const dcerpc_sub_dissector drsuapi_dissectors[] = { void proto_register_dcerpc_drsuapi(void) { static hf_register_info hf[] = { + { &hf_DsReplicaObjectIdentifier_dn, + { "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, @@ -19402,6 +24981,8 @@ void proto_register_dcerpc_drsuapi(void) { "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, @@ -19640,12 +25221,18 @@ void proto_register_dcerpc_drsuapi(void) { "Mszip1", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.mszip1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip6, { "Mszip6", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.mszip6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_mszip9, + { "Mszip9", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.mszip9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress1, { "Xpress1", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.xpress1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress6, { "Xpress6", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.xpress6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCompressedCtr_xpress9, + { "Xpress9", "drsuapi.drsuapi_DsGetNCChangesCompressedCtr.xpress9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1, { "Ctr1", "drsuapi.drsuapi_DsGetNCChangesCtr1TS.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr1TS_ctr1_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesCtr1TS.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size, { "Ndr Size", "drsuapi.drsuapi_DsGetNCChangesCtr1.__ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret, @@ -19674,6 +25261,8 @@ void proto_register_dcerpc_drsuapi(void) { "Mszip1", "drsuapi.drsuapi_DsGetNCChangesCtr2.mszip1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6, { "Ctr6", "drsuapi.drsuapi_DsGetNCChangesCtr6TS.ctr6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr6TS_ctr6_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesCtr6TS.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr6___ndr_size, { "Ndr Size", "drsuapi.drsuapi_DsGetNCChangesCtr6.__ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr6_drs_error, @@ -19714,6 +25303,44 @@ void proto_register_dcerpc_drsuapi(void) { "Level", "drsuapi.drsuapi_DsGetNCChangesCtr7.level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr7_type, { "Type", "drsuapi.drsuapi_DsGetNCChangesCtr7.type", FT_UINT16, BASE_DEC, VALS(drsuapi_drsuapi_DsGetNCChangesCompressionType_vals), 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9TS_ctr9, + { "Ctr9", "drsuapi.drsuapi_DsGetNCChangesCtr9TS.ctr9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9TS_ctr9_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesCtr9TS.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9___ndr_size, + { "Ndr Size", "drsuapi.drsuapi_DsGetNCChangesCtr9.__ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_drs_error, + { "Drs Error", "drsuapi.drsuapi_DsGetNCChangesCtr9.drs_error", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_extended_ret, + { "Extended Ret", "drsuapi.drsuapi_DsGetNCChangesCtr9.extended_ret", FT_UINT32, BASE_HEX, VALS(drsuapi_drsuapi_DsExtendedError_vals), 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object, + { "First Object", "drsuapi.drsuapi_DsGetNCChangesCtr9.first_object", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes, + { "Linked Attributes", "drsuapi.drsuapi_DsGetNCChangesCtr9.linked_attributes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes_count, + { "Linked Attributes Count", "drsuapi.drsuapi_DsGetNCChangesCtr9.linked_attributes_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_mapping_ctr, + { "Mapping Ctr", "drsuapi.drsuapi_DsGetNCChangesCtr9.mapping_ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_more_data, + { "More Data", "drsuapi.drsuapi_DsGetNCChangesCtr9.more_data", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context, + { "Naming Context", "drsuapi.drsuapi_DsGetNCChangesCtr9.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_linked_attributes_count, + { "Nc Linked Attributes Count", "drsuapi.drsuapi_DsGetNCChangesCtr9.nc_linked_attributes_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_object_count, + { "Nc Object Count", "drsuapi.drsuapi_DsGetNCChangesCtr9.nc_object_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_new_highwatermark, + { "New Highwatermark", "drsuapi.drsuapi_DsGetNCChangesCtr9.new_highwatermark", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_object_count, + { "Object Count", "drsuapi.drsuapi_DsGetNCChangesCtr9.object_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_old_highwatermark, + { "Old Highwatermark", "drsuapi.drsuapi_DsGetNCChangesCtr9.old_highwatermark", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_guid, + { "Source Dsa Guid", "drsuapi.drsuapi_DsGetNCChangesCtr9.source_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_invocation_id, + { "Source Dsa Invocation Id", "drsuapi.drsuapi_DsGetNCChangesCtr9.source_dsa_invocation_id", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector, + { "Uptodateness Vector", "drsuapi.drsuapi_DsGetNCChangesCtr9.uptodateness_vector", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr1, { "Ctr1", "drsuapi.drsuapi_DsGetNCChangesCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr2, @@ -19722,6 +25349,8 @@ void proto_register_dcerpc_drsuapi(void) { "Ctr6", "drsuapi.drsuapi_DsGetNCChangesCtr.ctr6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr7, { "Ctr7", "drsuapi.drsuapi_DsGetNCChangesCtr.ctr7", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr9, + { "Ctr9", "drsuapi.drsuapi_DsGetNCChangesCtr.ctr9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_compressed_length, { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr1.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1_decompressed_length, @@ -19738,6 +25367,14 @@ void proto_register_dcerpc_drsuapi(void) { "Ts", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr6.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6_ts_, { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr6.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_compressed_length, + { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr9.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_decompressed_length, + { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr9.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts, + { "Ts", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr9.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9_ts_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesMSZIPCtr9.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest10_destination_dsa_guid, { "Destination Dsa Guid", "drsuapi.drsuapi_DsGetNCChangesRequest10.destination_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest10_extended_op, @@ -19766,6 +25403,38 @@ void proto_register_dcerpc_drsuapi(void) { "Source Dsa Invocation Id", "drsuapi.drsuapi_DsGetNCChangesRequest10.source_dsa_invocation_id", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector, { "Uptodateness Vector", "drsuapi.drsuapi_DsGetNCChangesRequest10.uptodateness_vector", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_correlationID, + { "CorrelationID", "drsuapi.drsuapi_DsGetNCChangesRequest11.correlationID", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_destination_dsa_guid, + { "Destination Dsa Guid", "drsuapi.drsuapi_DsGetNCChangesRequest11.destination_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_extended_op, + { "Extended Op", "drsuapi.drsuapi_DsGetNCChangesRequest11.extended_op", FT_UINT32, BASE_HEX, VALS(drsuapi_drsuapi_DsExtendedOperation_vals), 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_fsmo_info, + { "Fsmo Info", "drsuapi.drsuapi_DsGetNCChangesRequest11.fsmo_info", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_highwatermark, + { "Highwatermark", "drsuapi.drsuapi_DsGetNCChangesRequest11.highwatermark", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_mapping_ctr, + { "Mapping Ctr", "drsuapi.drsuapi_DsGetNCChangesRequest11.mapping_ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_ndr_size, + { "Max Ndr Size", "drsuapi.drsuapi_DsGetNCChangesRequest11.max_ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_object_count, + { "Max Object Count", "drsuapi.drsuapi_DsGetNCChangesRequest11.max_object_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_more_flags, + { "More Flags", "drsuapi.drsuapi_DsGetNCChangesRequest11.more_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context, + { "Naming Context", "drsuapi.drsuapi_DsGetNCChangesRequest11.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set, + { "Partial Attribute Set", "drsuapi.drsuapi_DsGetNCChangesRequest11.partial_attribute_set", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex, + { "Partial Attribute Set Ex", "drsuapi.drsuapi_DsGetNCChangesRequest11.partial_attribute_set_ex", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_replica_flags, + { "Replica Flags", "drsuapi.drsuapi_DsGetNCChangesRequest11.replica_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer, + { "Reserved Buffer", "drsuapi.drsuapi_DsGetNCChangesRequest11.reserved_buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_source_dsa_invocation_id, + { "Source Dsa Invocation Id", "drsuapi.drsuapi_DsGetNCChangesRequest11.source_dsa_invocation_id", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector, + { "Uptodateness Vector", "drsuapi.drsuapi_DsGetNCChangesRequest11.uptodateness_vector", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest5_destination_dsa_guid, { "Destination Dsa Guid", "drsuapi.drsuapi_DsGetNCChangesRequest5.destination_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest5_extended_op, @@ -19814,26 +25483,36 @@ void proto_register_dcerpc_drsuapi(void) { "Uptodateness Vector", "drsuapi.drsuapi_DsGetNCChangesRequest8.uptodateness_vector", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest_req10, { "Req10", "drsuapi.drsuapi_DsGetNCChangesRequest.req10", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesRequest_req11, + { "Req11", "drsuapi.drsuapi_DsGetNCChangesRequest.req11", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest_req5, { "Req5", "drsuapi.drsuapi_DsGetNCChangesRequest.req5", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChangesRequest_req8, { "Req8", "drsuapi.drsuapi_DsGetNCChangesRequest.req8", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_compressed_length, - { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_decompressed_length, - { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts, - { "Ts", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1_ts_, - { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_compressed_length, - { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_decompressed_length, - { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts, - { "Ts", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6_ts_, - { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_compressed_length, + { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr1.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_decompressed_length, + { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr1.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts, + { "Ts", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr1.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1_ts_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr1.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_compressed_length, + { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr6.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_decompressed_length, + { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr6.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts, + { "Ts", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr6.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6_ts_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr6.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_compressed_length, + { "Compressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr9.compressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_decompressed_length, + { "Decompressed Length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr9.decompressed_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts, + { "Ts", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr9.ts", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9_ts_, + { "Subcontext length", "drsuapi.drsuapi_DsGetNCChangesXPRESSCtr9.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle, { "Bind Handle", "drsuapi.drsuapi_DsGetNCChanges.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsGetNCChanges_ctr, @@ -19996,10 +25675,28 @@ void proto_register_dcerpc_drsuapi(void) { "Source Dsa Dn", "drsuapi.drsuapi_DsReplicaAddRequest2.source_dsa_dn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn, { "Transport Dn", "drsuapi.drsuapi_DsReplicaAddRequest2.transport_dn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_correlationID, + { "CorrelationID", "drsuapi.drsuapi_DsReplicaAddRequest3.correlationID", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context, + { "Naming Context", "drsuapi.drsuapi_DsReplicaAddRequest3.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_options, + { "Options", "drsuapi.drsuapi_DsReplicaAddRequest3.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer, + { "Reserved Buffer", "drsuapi.drsuapi_DsReplicaAddRequest3.reserved_buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_schedule, + { "Schedule", "drsuapi.drsuapi_DsReplicaAddRequest3.schedule", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address, + { "Source Dsa Address", "drsuapi.drsuapi_DsReplicaAddRequest3.source_dsa_address", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn, + { "Source Dsa Dn", "drsuapi.drsuapi_DsReplicaAddRequest3.source_dsa_dn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn, + { "Transport Dn", "drsuapi.drsuapi_DsReplicaAddRequest3.transport_dn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaAddRequest_req1, { "Req1", "drsuapi.drsuapi_DsReplicaAddRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaAddRequest_req2, { "Req2", "drsuapi.drsuapi_DsReplicaAddRequest.req2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaAddRequest_req3, + { "Req3", "drsuapi.drsuapi_DsReplicaAddRequest.req3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle, { "Bind Handle", "drsuapi.drsuapi_DsReplicaAdd.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaAdd_level, @@ -20248,6 +25945,26 @@ void proto_register_dcerpc_drsuapi(void) { "Count", "drsuapi.drsuapi_DsReplicaKccDsaFailuresCtr.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, { "Reserved", "drsuapi.drsuapi_DsReplicaKccDsaFailuresCtr.reserved", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_attid, + { "Attid", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.attid", FT_UINT32, BASE_HEX, VALS(drsuapi_drsuapi_DsAttributeId_vals), 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_flags, + { "Flags", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier, + { "Identifier", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.identifier", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_meta_data, + { "Meta Data", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.meta_data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_originating_add_time, + { "Originating Add Time", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.originating_add_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_timeExpired, + { "TimeExpired", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.timeExpired", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused1, + { "Unused1", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.unused1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused2, + { "Unused2", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.unused2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused3, + { "Unused3", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.unused3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_value, + { "Value", "drsuapi.drsuapi_DsReplicaLinkedAttribute3.value", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid, { "Attid", "drsuapi.drsuapi_DsReplicaLinkedAttribute.attid", FT_UINT32, BASE_HEX, VALS(drsuapi_drsuapi_DsAttributeId_vals), 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_flags, @@ -20403,7 +26120,7 @@ void proto_register_dcerpc_drsuapi(void) { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_binary, { "Binary", "drsuapi.drsuapi_DsReplicaObjectIdentifier3Binary.binary", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_dn, - { "Dn", "drsuapi.drsuapi_DsReplicaObjectIdentifier3Binary.dn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Dn", "drsuapi.drsuapi_DsReplicaObjectIdentifier3Binary.dn", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_guid, { "Guid", "drsuapi.drsuapi_DsReplicaObjectIdentifier3Binary.guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_sid, @@ -20415,7 +26132,7 @@ void proto_register_dcerpc_drsuapi(void) { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_sid, { "Ndr Size Sid", "drsuapi.drsuapi_DsReplicaObjectIdentifier3.__ndr_size_sid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_dn, - { "Dn", "drsuapi.drsuapi_DsReplicaObjectIdentifier3.dn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Dn", "drsuapi.drsuapi_DsReplicaObjectIdentifier3.dn", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_guid, { "Guid", "drsuapi.drsuapi_DsReplicaObjectIdentifier3.guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_sid, @@ -20486,14 +26203,28 @@ void proto_register_dcerpc_drsuapi(void) { "Source Dsa Dns", "drsuapi.drsuapi_DsReplicaSyncRequest1.source_dsa_dns", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_guid, { "Source Dsa Guid", "drsuapi.drsuapi_DsReplicaSyncRequest1.source_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_correlationID, + { "CorrelationID", "drsuapi.drsuapi_DsReplicaSyncRequest2.correlationID", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context, + { "Naming Context", "drsuapi.drsuapi_DsReplicaSyncRequest2.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_options, + { "Options", "drsuapi.drsuapi_DsReplicaSyncRequest2.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer, + { "Reserved Buffer", "drsuapi.drsuapi_DsReplicaSyncRequest2.reserved_buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns, + { "Source Dsa Dns", "drsuapi.drsuapi_DsReplicaSyncRequest2.source_dsa_dns", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_guid, + { "Source Dsa Guid", "drsuapi.drsuapi_DsReplicaSyncRequest2.source_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1, { "Req1", "drsuapi.drsuapi_DsReplicaSyncRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSyncRequest_req2, + { "Req2", "drsuapi.drsuapi_DsReplicaSyncRequest.req2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaSync_bind_handle, { "Bind Handle", "drsuapi.drsuapi_DsReplicaSync.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaSync_level, + { "Level", "drsuapi.drsuapi_DsReplicaSync.level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaSync_req, { "Req", "drsuapi.drsuapi_DsReplicaSync.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_DsReplicaSync_version, - { "Version", "drsuapi.drsuapi_DsReplicaSync.version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, { "Dest Dsa Dns Name", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest1.dest_dsa_dns_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, @@ -20502,8 +26233,22 @@ void proto_register_dcerpc_drsuapi(void) { "Naming Context", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest1.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options, { "Options", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest1.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_correlationID, + { "CorrelationID", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.correlationID", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name, + { "Dest Dsa Dns Name", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.dest_dsa_dns_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_guid, + { "Dest Dsa Guid", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.dest_dsa_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context, + { "Naming Context", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_options, + { "Options", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer, + { "Reserved Buffer", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest2.reserved_buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req1, { "Req1", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req2, + { "Req2", "drsuapi.drsuapi_DsReplicaUpdateRefsRequest.req2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle, { "Bind Handle", "drsuapi.drsuapi_DsReplicaUpdateRefs.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level, @@ -20543,9 +26288,53 @@ void proto_register_dcerpc_drsuapi(void) { &hf_drsuapi_drsuapi_DsWriteAccountSpn_res, { "Res", "drsuapi.drsuapi_DsWriteAccountSpn.res", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_drsuapi_DsaAddressListItem_V1_address, - { "Address", "drsuapi.drsuapi_DsaAddressListItem_V1.address", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { "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_HEX|BASE_EXT_STRING, &WERR_errors_ext, 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_HEX|BASE_EXT_STRING, &WERR_errors_ext, 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, @@ -20580,28 +26369,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_ReadNgcKeyReplyV1_cNgcKey, - { "CNgcKey", "drsuapi.drsuapi_ReadNgcKeyReplyV1.cNgcKey", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_pNgcKey, - { "PNgcKey", "drsuapi.drsuapi_ReadNgcKeyReplyV1.pNgcKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKeyReplyV1_retVal, - { "RetVal", "drsuapi.drsuapi_ReadNgcKeyReplyV1.retVal", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKeyReply_V1, - { "V1", "drsuapi.drsuapi_ReadNgcKeyReply.V1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKeyReqV1_pwszAccount, - { "PwszAccount", "drsuapi.drsuapi_ReadNgcKeyReqV1.pwszAccount", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKeyReq_V1, - { "V1", "drsuapi.drsuapi_ReadNgcKeyReq.V1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKey_hDrs, - { "HDrs", "drsuapi.drsuapi_ReadNgcKey.hDrs", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKey_inVersion, - { "InVersion", "drsuapi.drsuapi_ReadNgcKey.inVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKey_ngcReply, - { "NgcReply", "drsuapi.drsuapi_ReadNgcKey.ngcReply", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKey_ngcReq, - { "NgcReq", "drsuapi.drsuapi_ReadNgcKey.ngcReq", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_drsuapi_drsuapi_ReadNgcKey_pOutVersion, - { "POutVersion", "drsuapi.drsuapi_ReadNgcKey.pOutVersion", FT_UINT32, BASE_DEC, 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_HEX|BASE_EXT_STRING, &WERR_errors_ext, 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_HEX|BASE_EXT_STRING, &WERR_errors_ext, 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, @@ -20614,12 +26425,18 @@ 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_00000008, + { "DRSUAPI SUPPORTED EXTENSION 00000008", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_00000008", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_00000008_tfs), ( 0x00000008 ), 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), ( 0x00000200 ), 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), ( 0x00000800 ), 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, @@ -20684,8 +26501,164 @@ void proto_register_dcerpc_drsuapi(void) { "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_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, + { "Buffer Size", "drsuapi.drsuapi_VAR_SIZE_BUFFER_WITH_VERSION.buffer_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_padding, + { "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_HEX|BASE_EXT_STRING, &WERR_errors_ext, 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, + { "Size", "drsuapi.lsa_String.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_lsa_String_string, + { "String", "drsuapi.lsa_String.string", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_drsuapi_opnum, { "Operation", "drsuapi.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosBlob_ctr, + { "Ctr", "drsuapi.package_PrimaryKerberosBlob.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosBlob_flags, + { "Flags", "drsuapi.package_PrimaryKerberosBlob.flags", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosBlob_version, + { "Version", "drsuapi.package_PrimaryKerberosBlob.version", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_keys, + { "Keys", "drsuapi.package_PrimaryKerberosCtr3.keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_num_keys, + { "Num Keys", "drsuapi.package_PrimaryKerberosCtr3.num_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_num_old_keys, + { "Num Old Keys", "drsuapi.package_PrimaryKerberosCtr3.num_old_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_old_keys, + { "Old Keys", "drsuapi.package_PrimaryKerberosCtr3.old_keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_padding1, + { "Padding1", "drsuapi.package_PrimaryKerberosCtr3.padding1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_padding2, + { "Padding2", "drsuapi.package_PrimaryKerberosCtr3.padding2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_padding3, + { "Padding3", "drsuapi.package_PrimaryKerberosCtr3.padding3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_padding4, + { "Padding4", "drsuapi.package_PrimaryKerberosCtr3.padding4", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_padding5, + { "Padding5", "drsuapi.package_PrimaryKerberosCtr3.padding5", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr3_salt, + { "Salt", "drsuapi.package_PrimaryKerberosCtr3.salt", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_default_iteration_count, + { "Default Iteration Count", "drsuapi.package_PrimaryKerberosCtr4.default_iteration_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_keys, + { "Keys", "drsuapi.package_PrimaryKerberosCtr4.keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_num_keys, + { "Num Keys", "drsuapi.package_PrimaryKerberosCtr4.num_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_num_old_keys, + { "Num Old Keys", "drsuapi.package_PrimaryKerberosCtr4.num_old_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_num_older_keys, + { "Num Older Keys", "drsuapi.package_PrimaryKerberosCtr4.num_older_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_num_service_keys, + { "Num Service Keys", "drsuapi.package_PrimaryKerberosCtr4.num_service_keys", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_old_keys, + { "Old Keys", "drsuapi.package_PrimaryKerberosCtr4.old_keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_older_keys, + { "Older Keys", "drsuapi.package_PrimaryKerberosCtr4.older_keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_salt, + { "Salt", "drsuapi.package_PrimaryKerberosCtr4.salt", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr4_service_keys, + { "Service Keys", "drsuapi.package_PrimaryKerberosCtr4.service_keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr_ctr3, + { "Ctr3", "drsuapi.package_PrimaryKerberosCtr.ctr3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosCtr_ctr4, + { "Ctr4", "drsuapi.package_PrimaryKerberosCtr.ctr4", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_keytype, + { "Keytype", "drsuapi.package_PrimaryKerberosKey3.keytype", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_reserved1, + { "Reserved1", "drsuapi.package_PrimaryKerberosKey3.reserved1", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_reserved2, + { "Reserved2", "drsuapi.package_PrimaryKerberosKey3.reserved2", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_reserved3, + { "Reserved3", "drsuapi.package_PrimaryKerberosKey3.reserved3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_value, + { "Value", "drsuapi.package_PrimaryKerberosKey3.value", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_value_len, + { "Value Len", "drsuapi.package_PrimaryKerberosKey3.value_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey3_value_ofs, + { "Value Ofs", "drsuapi.package_PrimaryKerberosKey3.value_ofs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_iteration_count, + { "Iteration Count", "drsuapi.package_PrimaryKerberosKey4.iteration_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_keytype, + { "Keytype", "drsuapi.package_PrimaryKerberosKey4.keytype", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_reserved1, + { "Reserved1", "drsuapi.package_PrimaryKerberosKey4.reserved1", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_reserved2, + { "Reserved2", "drsuapi.package_PrimaryKerberosKey4.reserved2", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_reserved3, + { "Reserved3", "drsuapi.package_PrimaryKerberosKey4.reserved3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_value, + { "Value", "drsuapi.package_PrimaryKerberosKey4.value", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_value_len, + { "Value Len", "drsuapi.package_PrimaryKerberosKey4.value_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosKey4_value_ofs, + { "Value Ofs", "drsuapi.package_PrimaryKerberosKey4.value_ofs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosString_length, + { "Length", "drsuapi.package_PrimaryKerberosString.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosString_size, + { "Size", "drsuapi.package_PrimaryKerberosString.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_package_PrimaryKerberosString_string_ofs, + { "String Ofs", "drsuapi.package_PrimaryKerberosString.string_ofs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_pkb_PrimaryKerberosBlob, + { "PrimaryKerberosBlob", "drsuapi.pkb.PrimaryKerberosBlob", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_sch_supplementalCredentials, + { "SupplementalCredentials", "drsuapi.sch.supplementalCredentials", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob___ndr_size, + { "Ndr Size", "drsuapi.supplementalCredentialsBlob.__ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob_sub, + { "Sub", "drsuapi.supplementalCredentialsBlob.sub", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob_sub_, + { "Subcontext length", "drsuapi.supplementalCredentialsBlob.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob_unknown1, + { "Unknown1", "drsuapi.supplementalCredentialsBlob.unknown1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob_unknown2, + { "Unknown2", "drsuapi.supplementalCredentialsBlob.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsBlob_unknown3, + { "Unknown3", "drsuapi.supplementalCredentialsBlob.unknown3", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsPackage_data, + { "Data", "drsuapi.supplementalCredentialsPackage.data", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsPackage_data_len, + { "Data Len", "drsuapi.supplementalCredentialsPackage.data_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsPackage_name, + { "Name", "drsuapi.supplementalCredentialsPackage.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsPackage_name_len, + { "Name Len", "drsuapi.supplementalCredentialsPackage.name_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsPackage_reserved, + { "Reserved", "drsuapi.supplementalCredentialsPackage.reserved", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsSubBlob_num_packages, + { "Num Packages", "drsuapi.supplementalCredentialsSubBlob.num_packages", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsSubBlob_packages, + { "Packages", "drsuapi.supplementalCredentialsSubBlob.packages", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsSubBlob_prefix, + { "Prefix", "drsuapi.supplementalCredentialsSubBlob.prefix", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_drsuapi_supplementalCredentialsSubBlob_signature, + { "Signature", "drsuapi.supplementalCredentialsSubBlob.signature", FT_UINT1632, BASE_HEX, VALS(drsuapi_supplementalCredentialsSignature_vals), 0, NULL, HFILL }}, { &hf_drsuapi_werror, { "Windows Error", "drsuapi.werror", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, }; @@ -20693,10 +26666,24 @@ void proto_register_dcerpc_drsuapi(void) static int *ett[] = { &ett_dcerpc_drsuapi, + &ett_drsuapi_lsa_String, + &ett_drsuapi_supplementalCredentialsPackage, + &ett_drsuapi_supplementalCredentialsSubBlob, + &ett_drsuapi_supplementalCredentialsBlob, + &ett_drsuapi_sch, + &ett_drsuapi_package_PrimaryKerberosString, + &ett_drsuapi_package_PrimaryKerberosKey3, + &ett_drsuapi_package_PrimaryKerberosCtr3, + &ett_drsuapi_package_PrimaryKerberosKey4, + &ett_drsuapi_package_PrimaryKerberosCtr4, + &ett_drsuapi_package_PrimaryKerberosCtr, + &ett_drsuapi_package_PrimaryKerberosBlob, + &ett_drsuapi_pkb, &ett_drsuapi_security_GroupAttrs, &ett_drsuapi_drsuapi_DrsOptions, &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, @@ -20709,6 +26696,7 @@ void proto_register_dcerpc_drsuapi(void) &ett_drsuapi_drsuapi_DsBindInfoCtr, &ett_drsuapi_drsuapi_DsReplicaObjectIdentifier, &ett_drsuapi_drsuapi_DsReplicaSyncRequest1, + &ett_drsuapi_drsuapi_DsReplicaSyncRequest2, &ett_drsuapi_drsuapi_DsReplicaSyncRequest, &ett_drsuapi_drsuapi_DsReplicaHighWaterMark, &ett_drsuapi_drsuapi_DsReplicaCursor, @@ -20720,6 +26708,7 @@ void proto_register_dcerpc_drsuapi(void) &ett_drsuapi_drsuapi_DsPartialAttributeSet, &ett_drsuapi_drsuapi_DsGetNCChangesRequest8, &ett_drsuapi_drsuapi_DsGetNCChangesRequest10, + &ett_drsuapi_drsuapi_DsGetNCChangesRequest11, &ett_drsuapi_drsuapi_DsGetNCChangesRequest, &ett_drsuapi_drsuapi_DsReplicaCursor2, &ett_drsuapi_drsuapi_DsReplicaCursor2CtrEx, @@ -20737,21 +26726,28 @@ void proto_register_dcerpc_drsuapi(void) &ett_drsuapi_drsuapi_DsGetNCChangesCtr1, &ett_drsuapi_drsuapi_DsLinkedAttributeFlags, &ett_drsuapi_drsuapi_DsReplicaLinkedAttribute, + &ett_drsuapi_drsuapi_DsReplicaLinkedAttribute3, &ett_drsuapi_drsuapi_DsGetNCChangesCtr6, + &ett_drsuapi_drsuapi_DsGetNCChangesCtr9, &ett_drsuapi_drsuapi_DsGetNCChangesCtr1TS, &ett_drsuapi_drsuapi_DsGetNCChangesCtr6TS, + &ett_drsuapi_drsuapi_DsGetNCChangesCtr9TS, &ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr1, &ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr6, - &ett_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1, - &ett_drsuapi_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6, + &ett_drsuapi_drsuapi_DsGetNCChangesMSZIPCtr9, + &ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr1, + &ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr6, + &ett_drsuapi_drsuapi_DsGetNCChangesXPRESSCtr9, &ett_drsuapi_drsuapi_DsGetNCChangesCompressedCtr, &ett_drsuapi_drsuapi_DsGetNCChangesCtr2, &ett_drsuapi_drsuapi_DsGetNCChangesCtr7, &ett_drsuapi_drsuapi_DsGetNCChangesCtr, &ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1, + &ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2, &ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest, &ett_drsuapi_drsuapi_DsReplicaAddRequest1, &ett_drsuapi_drsuapi_DsReplicaAddRequest2, + &ett_drsuapi_drsuapi_DsReplicaAddRequest3, &ett_drsuapi_drsuapi_DsReplicaAddRequest, &ett_drsuapi_drsuapi_DsReplicaDelRequest1, &ett_drsuapi_drsuapi_DsReplicaDelRequest, @@ -20851,10 +26847,30 @@ void proto_register_dcerpc_drsuapi(void) &ett_drsuapi_drsuapi_QuerySitesByCostCtr, &ett_drsuapi_drsuapi_QuerySitesByCostRequest1, &ett_drsuapi_drsuapi_QuerySitesByCostRequest, - &ett_drsuapi_drsuapi_ReadNgcKeyReqV1, - &ett_drsuapi_drsuapi_ReadNgcKeyReq, - &ett_drsuapi_drsuapi_ReadNgcKeyReplyV1, - &ett_drsuapi_drsuapi_ReadNgcKeyReply, + &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"); diff --git a/epan/dissectors/packet-dcerpc-drsuapi.h b/epan/dissectors/packet-dcerpc-drsuapi.h index 48509eb09b..be1874a01b 100644 --- a/epan/dissectors/packet-dcerpc-drsuapi.h +++ b/epan/dissectors/packet-dcerpc-drsuapi.h @@ -8,13 +8,11 @@ found at https://wiki.wireshark.org/Pidl */ -#include "packet-dcerpc-misc.h" -#include "packet-dcerpc-lsa.h" -#include "packet-dcerpc-samr.h" - #ifndef __PACKET_DCERPC_DRSUAPI_H #define __PACKET_DCERPC_DRSUAPI_H +#define SUPPLEMENTAL_CREDENTIALS_PREFIX ( " " ) + #define DRSUAPI_DS_BIND_GUID ( "e24d201a-4fd6-11d1-a3da-0000f875ae0d" ) #define DRSUAPI_DS_BIND_GUID_W2K ( "6abec3d1-3054-41c8-a362-5a0c5b7d5d71" ) @@ -25,10 +23,26 @@ #define DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID ( "E3514235-4B06-11D1-AB04-00C04FC2DCD2" ) +int drsuapi_dissect_struct_lsa_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_supplementalCredentialsPackage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +#define SUPPLEMENTAL_CREDENTIALS_SIGNATURE (0x0050) +extern const value_string drsuapi_supplementalCredentialsSignature_vals[]; +int drsuapi_dissect_enum_supplementalCredentialsSignature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_); +int drsuapi_dissect_struct_supplementalCredentialsSubBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_supplementalCredentialsBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_sch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosKey3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosKey4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosCtr4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_package_PrimaryKerberosBlob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_pkb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_bitmap_security_GroupAttrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_bitmap_DrsOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_bitmap_DrsMoreOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); @@ -40,6 +54,7 @@ int drsuapi_dissect_struct_DsBindInfoFallBack(tvbuff_t *tvb _U_, int offset _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); @@ -200,6 +215,7 @@ int drsuapi_dissect_enum_DsAttributeId(tvbuff_t *tvb _U_, int offset _U_, packet 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); @@ -216,22 +232,29 @@ int drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvbuff_t *tvb _U_, int offs 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_struct_DsGetNCChangesCtr1TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_struct_DsGetNCChangesCtr6TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_DsGetNCChangesCtr9TS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); -int drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); -int drsuapi_dissect_struct_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_DsGetNCChangesMSZIPCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +int drsuapi_dissect_struct_DsGetNCChangesXPRESSCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); #define DRSUAPI_COMPRESSION_TYPE_MSZIP (2) -#define DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2 (3) +#define DRSUAPI_COMPRESSION_TYPE_XPRESS (3) extern const value_string drsuapi_drsuapi_DsGetNCChangesCompressionType_vals[]; int drsuapi_dissect_enum_DsGetNCChangesCompressionType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_); int drsuapi_dissect_struct_DsGetNCChangesCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); int drsuapi_dissect_struct_DsGetNCChangesCtr7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); #define DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS (1) @@ -432,6 +455,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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); -int drsuapi_dissect_struct_ReadNgcKeyReqV1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); -int drsuapi_dissect_struct_ReadNgcKeyReplyV1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t 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_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); #endif /* __PACKET_DCERPC_DRSUAPI_H */ diff --git a/epan/dissectors/packet-dcerpc-dssetup.c b/epan/dissectors/packet-dcerpc-dssetup.c index 1ace251acb..8d6d7be09a 100644 --- a/epan/dissectors/packet-dcerpc-dssetup.c +++ b/epan/dissectors/packet-dcerpc-dssetup.c @@ -229,9 +229,13 @@ dssetup_dissect_element_DsRolePrimaryDomInfoBasic_domain(tvbuff_t *tvb _U_, int static int dssetup_dissect_element_DsRolePrimaryDomInfoBasic_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -248,9 +252,13 @@ dssetup_dissect_element_DsRolePrimaryDomInfoBasic_dns_domain(tvbuff_t *tvb _U_, static int dssetup_dissect_element_DsRolePrimaryDomInfoBasic_dns_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_dns_domain, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_dns_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -267,9 +275,13 @@ dssetup_dissect_element_DsRolePrimaryDomInfoBasic_forest(tvbuff_t *tvb _U_, int static int dssetup_dissect_element_DsRolePrimaryDomInfoBasic_forest_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_forest, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_dssetup_dssetup_DsRolePrimaryDomInfoBasic_forest, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -544,8 +556,9 @@ dssetup_dissect_DsRoleInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_dssetup_dssetup_DsRoleInfo, &item, "dssetup_DsRoleInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case DS_ROLE_BASIC_INFORMATION: diff --git a/epan/dissectors/packet-dcerpc-efs.c b/epan/dissectors/packet-dcerpc-efs.c index def60ec611..6e846b4c2f 100644 --- a/epan/dissectors/packet-dcerpc-efs.c +++ b/epan/dissectors/packet-dcerpc-efs.c @@ -87,9 +87,10 @@ static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash_(tvbuff_t *tvb static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int efs_dissect_element_EFS_CERTIFICATE_BLOB_dwCertEncodingType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int efs_dissect_element_EFS_CERTIFICATE_BLOB_cbData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -161,7 +162,11 @@ efs_dissect_element_EFS_HASH_BLOB_pbData(tvbuff_t *tvb _U_, int offset _U_, pack static int efs_dissect_element_EFS_HASH_BLOB_pbData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, efs_dissect_element_EFS_HASH_BLOB_pbData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, efs_dissect_element_EFS_HASH_BLOB_pbData__); return offset; } @@ -264,9 +269,13 @@ efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvbuff_t *t static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -322,9 +331,10 @@ efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvbuff_t *tvb _U } static int -efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_); return offset; } @@ -345,13 +355,24 @@ efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers__(tvbuff_t *tvb _U_, return offset; } +static int +efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_pUsers = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb, offset, pinfo, parent_tree, di, drep, &nga_pUsers); + ALIGN_TO_5_BYTES; old_offset = offset; @@ -363,16 +384,12 @@ efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvbuff_t *tvb _U_, int offse offset = efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvb, offset, pinfo, tree, di, drep); - offset = efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb, offset, pinfo, tree, di, drep); + offset = efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb, offset, pinfo, tree, di, drep, &nga_pUsers); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } @@ -410,7 +427,11 @@ efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvbuff_t *tvb _U_, int offset _U static int efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__); return offset; } @@ -555,9 +576,13 @@ efs_dissect_element_EfsRpcOpenFileRaw_pvContext_(tvbuff_t *tvb _U_, int offset _ static int efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcOpenFileRaw_FileName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcOpenFileRaw_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -733,9 +758,13 @@ efs_dissect_EfsRpcCloseRaw_request(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcEncryptFileSrv_Filename, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcEncryptFileSrv_Filename, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -771,9 +800,13 @@ efs_dissect_EfsRpcEncryptFileSrv_request(tvbuff_t *tvb _U_, int offset _U_, pack static int efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcDecryptFileSrv_FileName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcDecryptFileSrv_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -820,9 +853,13 @@ efs_dissect_EfsRpcDecryptFileSrv_request(tvbuff_t *tvb _U_, int offset _U_, pack static int efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcQueryUsersOnFile_FileName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcQueryUsersOnFile_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -886,9 +923,13 @@ efs_dissect_EfsRpcQueryUsersOnFile_request(tvbuff_t *tvb _U_, int offset _U_, pa static int efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcQueryRecoveryAgents_FileName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcQueryRecoveryAgents_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -952,9 +993,13 @@ efs_dissect_EfsRpcQueryRecoveryAgents_request(tvbuff_t *tvb _U_, int offset _U_, static int efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcRemoveUsersFromFile_FileName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcRemoveUsersFromFile_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -990,9 +1035,13 @@ efs_dissect_EfsRpcRemoveUsersFromFile_request(tvbuff_t *tvb _U_, int offset _U_, static int efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcAddUsersToFile_FileName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_efs_EfsRpcAddUsersToFile_FileName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-eventlog.c b/epan/dissectors/packet-dcerpc-eventlog.c index 873c068710..78cd21a548 100644 --- a/epan/dissectors/packet-dcerpc-eventlog.c +++ b/epan/dissectors/packet-dcerpc-eventlog.c @@ -179,7 +179,7 @@ static int eventlog_dissect_element_Record_time_generated(tvbuff_t *tvb _U_, int static int eventlog_dissect_element_Record_time_written(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_event_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_event_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int eventlog_dissect_element_Record_num_of_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int eventlog_dissect_element_Record_num_of_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_of_strings); static int eventlog_dissect_element_Record_event_category(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_reserved_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_closing_record_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -190,7 +190,7 @@ static int eventlog_dissect_element_Record_data_length(tvbuff_t *tvb _U_, int of static int eventlog_dissect_element_Record_data_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_source_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_Record_computer_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int eventlog_dissect_element_Record_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int eventlog_dissect_element_Record_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_of_strings); static int eventlog_dissect_element_Record_raw_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_ChangeUnknown0_unknown0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int eventlog_dissect_element_ChangeUnknown0_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -336,12 +336,11 @@ eventlog_dissect_element_Record_computer_name(tvbuff_t *tvb, int offset, packet_ offset+=len; return offset; } -static uint16_t num_of_strings; static int -eventlog_dissect_element_Record_num_of_strings(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep) +eventlog_dissect_element_Record_num_of_strings(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, uint16_t *num_of_strings) { num_of_strings=0; - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_num_of_strings,&num_of_strings); + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_num_of_strings,num_of_strings); return offset; } static uint32_t string_offset; @@ -353,14 +352,14 @@ eventlog_dissect_element_Record_stringoffset(tvbuff_t *tvb, int offset, packet_i return offset; } static int -eventlog_dissect_element_Record_strings(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, uint8_t *drep _U_) +eventlog_dissect_element_Record_strings(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *num_of_strings) { - while(string_offset && num_of_strings){ + while(string_offset && *num_of_strings){ unsigned len; len=tvb_unicode_strsize(tvb, string_offset); proto_tree_add_item(tree, hf_eventlog_Record_string, tvb, string_offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN); string_offset+=len; - num_of_strings--; + (*num_of_strings)--; } return offset; } @@ -628,6 +627,7 @@ eventlog_dissect_element_Record_raw_data(tvbuff_t *tvb _U_, int offset _U_, pack int eventlog_dissect_struct_Record(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + uint16_t num_of_strings = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -655,7 +655,7 @@ eventlog_dissect_struct_Record(tvbuff_t *tvb _U_, int offset _U_, packet_info *p offset = eventlog_dissect_element_Record_event_type(tvb, offset, pinfo, tree, di, drep); - offset = eventlog_dissect_element_Record_num_of_strings(tvb, offset, pinfo, tree, di, drep); + offset = eventlog_dissect_element_Record_num_of_strings(tvb, offset, pinfo, tree, di, drep, &num_of_strings); offset = eventlog_dissect_element_Record_event_category(tvb, offset, pinfo, tree, di, drep); @@ -677,7 +677,7 @@ eventlog_dissect_struct_Record(tvbuff_t *tvb _U_, int offset _U_, packet_info *p offset = eventlog_dissect_element_Record_computer_name(tvb, offset, pinfo, tree, di, drep); - offset = eventlog_dissect_element_Record_strings(tvb, offset, pinfo, tree, di, drep); + offset = eventlog_dissect_element_Record_strings(tvb, offset, pinfo, tree, di, drep, &num_of_strings); offset = eventlog_dissect_element_Record_raw_data(tvb, offset, pinfo, tree, di, drep); @@ -1995,7 +1995,11 @@ eventlog_dissect_element_GetLogInformation_dwInfoLevel(tvbuff_t *tvb _U_, int of static int eventlog_dissect_element_GetLogInformation_lpBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, eventlog_dissect_element_GetLogInformation_lpBuffer_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, eventlog_dissect_element_GetLogInformation_lpBuffer_); return offset; } diff --git a/epan/dissectors/packet-dcerpc-frsrpc.c b/epan/dissectors/packet-dcerpc-frsrpc.c index af1a09aaaf..f75cac2a3a 100644 --- a/epan/dissectors/packet-dcerpc-frsrpc.c +++ b/epan/dissectors/packet-dcerpc-frsrpc.c @@ -567,8 +567,8 @@ static int frsrpc_dissect_element_CommPktChunkData_co_ext_win2k_(tvbuff_t *tvb _ static int frsrpc_dissect_element_CommPktChunkData_co_extension2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frsrpc_dissect_element_CommPktChunkData_bopend(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frsrpc_dissect_element_CommPktChunk_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); -static int frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); -static int frsrpc_dissect_element_CommPktChunk_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); +static int frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type); +static int frsrpc_dissect_element_CommPktChunk_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type); const value_string frsrpc_frsrpc_CommPktMajor_vals[] = { { FRSRPC_COMM_PKT_MAJOR_0, "FRSRPC_COMM_PKT_MAJOR_0" }, { 0, NULL } @@ -653,7 +653,7 @@ frsrpc_dissect_element_CommPktChangeOrderCommand_file_name(tvbuff_t *tvb _U_, in int frsrpc_dissect_struct_CommPktChunk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - uint1632_t type = 0; + uint32_t type = 0; int i = 0; const char *s = NULL; proto_item *item = NULL; @@ -665,7 +665,7 @@ frsrpc_dissect_struct_CommPktChunk(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_item_add_subtree(item, ett_frsrpc_frsrpc_CommPktChunk); } offset = frsrpc_dissect_element_CommPktChunk_type(tvb, offset, pinfo, tree, di, drep, &type); - offset = frsrpc_dissect_element_CommPktChunk_data(tvb, offset, pinfo, tree, di, drep, &type); + offset = frsrpc_dissect_element_CommPktChunk_data(tvb, offset, pinfo, tree, di, drep, type); for (i=0; frsrpc_frsrpc_CommPktChunkType_vals[i].strptr; i++) { if (frsrpc_frsrpc_CommPktChunkType_vals[i].value == type) { s = frsrpc_frsrpc_CommPktChunkType_vals[i].strptr; @@ -730,7 +730,7 @@ frsrpc_dissect_struct_frsrpc_CommPktChunkCtr(tvbuff_t *tvb, int offset, packet_i static int frsrpc_dissect_element_CommPktChunkGuidName_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -738,7 +738,7 @@ frsrpc_dissect_element_CommPktChunkGuidName_guid(tvbuff_t *tvb _U_, int offset _ uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkGuidName_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkGuidName_guid_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -758,7 +758,7 @@ frsrpc_dissect_element_CommPktChunkGuidName_guid_(tvbuff_t *tvb _U_, int offset static int frsrpc_dissect_element_CommPktChunkGuidName_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -766,7 +766,7 @@ frsrpc_dissect_element_CommPktChunkGuidName_name(tvbuff_t *tvb _U_, int offset _ uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkGuidName_name_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkGuidName_name_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2141,7 +2141,7 @@ frsrpc_dissect_element_CommPktChunkData_connection(tvbuff_t *tvb _U_, int offset static int frsrpc_dissect_element_CommPktChunkData_join_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2149,7 +2149,7 @@ frsrpc_dissect_element_CommPktChunkData_join_guid(tvbuff_t *tvb _U_, int offset uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_join_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_join_guid_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2177,7 +2177,7 @@ frsrpc_dissect_element_CommPktChunkData_last_join_time(tvbuff_t *tvb _U_, int of static int frsrpc_dissect_element_CommPktChunkData_vvector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2185,7 +2185,7 @@ frsrpc_dissect_element_CommPktChunkData_vvector(tvbuff_t *tvb _U_, int offset _U uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_vvector_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_vvector_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2205,7 +2205,7 @@ frsrpc_dissect_element_CommPktChunkData_vvector_(tvbuff_t *tvb _U_, int offset _ static int frsrpc_dissect_element_CommPktChunkData_join_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2213,7 +2213,7 @@ frsrpc_dissect_element_CommPktChunkData_join_time(tvbuff_t *tvb _U_, int offset uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_join_time_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_join_time_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2233,7 +2233,7 @@ frsrpc_dissect_element_CommPktChunkData_join_time_(tvbuff_t *tvb _U_, int offset static int frsrpc_dissect_element_CommPktChunkData_replica_version_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2241,7 +2241,7 @@ frsrpc_dissect_element_CommPktChunkData_replica_version_guid(tvbuff_t *tvb _U_, uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_replica_version_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_replica_version_guid_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2301,7 +2301,7 @@ frsrpc_dissect_element_CommPktChunkData_file_offset(tvbuff_t *tvb _U_, int offse static int frsrpc_dissect_element_CommPktChunkData_gvsn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2309,7 +2309,7 @@ frsrpc_dissect_element_CommPktChunkData_gvsn(tvbuff_t *tvb _U_, int offset _U_, uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_gvsn_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_gvsn_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2329,7 +2329,7 @@ frsrpc_dissect_element_CommPktChunkData_gvsn_(tvbuff_t *tvb _U_, int offset _U_, static int frsrpc_dissect_element_CommPktChunkData_co_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2337,7 +2337,7 @@ frsrpc_dissect_element_CommPktChunkData_co_guid(tvbuff_t *tvb _U_, int offset _U uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_co_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_co_guid_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2365,7 +2365,7 @@ frsrpc_dissect_element_CommPktChunkData_co_sequence_number(tvbuff_t *tvb _U_, in static int frsrpc_dissect_element_CommPktChunkData_remote_co(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2373,7 +2373,7 @@ frsrpc_dissect_element_CommPktChunkData_remote_co(tvbuff_t *tvb _U_, int offset uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_remote_co_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_remote_co_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2393,7 +2393,7 @@ frsrpc_dissect_element_CommPktChunkData_remote_co_(tvbuff_t *tvb _U_, int offset static int frsrpc_dissect_element_CommPktChunkData_co_ext_win2k(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2401,7 +2401,7 @@ frsrpc_dissect_element_CommPktChunkData_co_ext_win2k(tvbuff_t *tvb _U_, int offs uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunkData_co_ext_win2k_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunkData_co_ext_win2k_(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2447,6 +2447,8 @@ frsrpc_dissect_CommPktChunkData(tvbuff_t *tvb _U_, int offset _U_, packet_info * tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_frsrpc_frsrpc_CommPktChunkData, &item, "frsrpc_CommPktChunkData"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { default: offset = frsrpc_dissect_element_CommPktChunkData_blob(tvb, offset, pinfo, tree, di, drep); @@ -2564,9 +2566,9 @@ frsrpc_dissect_element_CommPktChunk_type(tvbuff_t *tvb _U_, int offset _U_, pack } static int -frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) +frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2574,7 +2576,7 @@ frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, pack uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunk_data_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_CommPktChunk_data_(subtvb, 0, pinfo, tree, di, drep, type); offset += (int)size; di->call_data->flags = saved_flags; @@ -2584,9 +2586,9 @@ frsrpc_dissect_element_CommPktChunk_data(tvbuff_t *tvb _U_, int offset _U_, pack } static int -frsrpc_dissect_element_CommPktChunk_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) +frsrpc_dissect_element_CommPktChunk_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type) { - offset = frsrpc_dissect_CommPktChunkData(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunk_data, *type); + offset = frsrpc_dissect_CommPktChunkData(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_CommPktChunk_data, type); return offset; } @@ -2716,7 +2718,7 @@ frsrpc_dissect_element_FrsSendCommPktReq_ctr(tvbuff_t *tvb _U_, int offset _U_, static int frsrpc_dissect_element_FrsSendCommPktReq_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -2724,7 +2726,7 @@ frsrpc_dissect_element_FrsSendCommPktReq_ctr_(tvbuff_t *tvb _U_, int offset _U_, uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_FrsSendCommPktReq_ctr_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_FrsSendCommPktReq_ctr__(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -2868,9 +2870,13 @@ frsrpc_dissect_element_FrsVerifyPromotionParent_parent_account(tvbuff_t *tvb _U_ static int frsrpc_dissect_element_FrsVerifyPromotionParent_parent_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_parent_account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_parent_account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2887,9 +2893,13 @@ frsrpc_dissect_element_FrsVerifyPromotionParent_parent_password(tvbuff_t *tvb _U static int frsrpc_dissect_element_FrsVerifyPromotionParent_parent_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_parent_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_parent_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2906,9 +2916,13 @@ frsrpc_dissect_element_FrsVerifyPromotionParent_replica_set_name(tvbuff_t *tvb _ static int frsrpc_dissect_element_FrsVerifyPromotionParent_replica_set_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_replica_set_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_replica_set_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2925,9 +2939,13 @@ frsrpc_dissect_element_FrsVerifyPromotionParent_replica_set_type(tvbuff_t *tvb _ static int frsrpc_dissect_element_FrsVerifyPromotionParent_replica_set_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_replica_set_type, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsVerifyPromotionParent_replica_set_type, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3002,9 +3020,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_parent_account(tvbuff_t *tvb _U_, static int frsrpc_dissect_element_FrsStartPromotionParent_parent_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_parent_account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_parent_account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3021,9 +3043,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_parent_password(tvbuff_t *tvb _U_ static int frsrpc_dissect_element_FrsStartPromotionParent_parent_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_parent_password, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_parent_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3040,9 +3066,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_replica_set_name(tvbuff_t *tvb _U static int frsrpc_dissect_element_FrsStartPromotionParent_replica_set_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_replica_set_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_replica_set_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3059,9 +3089,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_replica_set_type(tvbuff_t *tvb _U static int frsrpc_dissect_element_FrsStartPromotionParent_replica_set_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_replica_set_type, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_replica_set_type, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3078,9 +3112,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_connection_name(tvbuff_t *tvb _U_ static int frsrpc_dissect_element_FrsStartPromotionParent_connection_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_connection_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_connection_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3097,9 +3135,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_partner_name(tvbuff_t *tvb _U_, i static int frsrpc_dissect_element_FrsStartPromotionParent_partner_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_partner_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_partner_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3116,9 +3158,13 @@ frsrpc_dissect_element_FrsStartPromotionParent_partner_princ_name(tvbuff_t *tvb static int frsrpc_dissect_element_FrsStartPromotionParent_partner_princ_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_partner_princ_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frsrpc_frsrpc_FrsStartPromotionParent_partner_princ_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3151,7 +3197,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_connection_guid(tvbuff_t *tvb _U_ static int frsrpc_dissect_element_FrsStartPromotionParent_connection_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -3159,7 +3205,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_connection_guid_(tvbuff_t *tvb _U uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_FrsStartPromotionParent_connection_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_FrsStartPromotionParent_connection_guid__(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -3187,7 +3233,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_partner_guid(tvbuff_t *tvb _U_, i static int frsrpc_dissect_element_FrsStartPromotionParent_partner_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -3195,7 +3241,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_partner_guid_(tvbuff_t *tvb _U_, uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_FrsStartPromotionParent_partner_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_FrsStartPromotionParent_partner_guid__(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; @@ -3223,7 +3269,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_parent_guid(tvbuff_t *tvb _U_, in static int frsrpc_dissect_element_FrsStartPromotionParent_parent_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - uint3264_t size; + uint64_t size; int conformant = di->conformant_run; tvbuff_t *subtvb; @@ -3231,7 +3277,7 @@ frsrpc_dissect_element_FrsStartPromotionParent_parent_guid_(tvbuff_t *tvb _U_, i uint32_t saved_flags = di->call_data->flags; offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_frsrpc_frsrpc_FrsStartPromotionParent_parent_guid_, &size); di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset_length_caplen(tvb, offset, (const int)size, -1); + subtvb = tvb_new_subset_length_caplen(tvb, offset, (int)size, (int)size); frsrpc_dissect_element_FrsStartPromotionParent_parent_guid__(subtvb, 0, pinfo, tree, di, drep); offset += (int)size; di->call_data->flags = saved_flags; diff --git a/epan/dissectors/packet-dcerpc-frstrans.c b/epan/dissectors/packet-dcerpc-frstrans.c index 9a53360d73..c12ed44b62 100644 --- a/epan/dissectors/packet-dcerpc-frstrans.c +++ b/epan/dissectors/packet-dcerpc-frstrans.c @@ -246,7 +246,7 @@ static int frstrans_dissect_element_RdcParameterUnion_filter_generic(tvbuff_t *t static int frstrans_dissect_element_RdcParameterUnion_filter_max(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_RdcParameterUnion_filter_point(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_RdcParameters_rdc_chunker_algorithm(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rdc_chunker_algorithm); -static int frstrans_dissect_element_RdcParameters_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rdc_chunker_algorithm); +static int frstrans_dissect_element_RdcParameters_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t rdc_chunker_algorithm); const value_string frstrans_frstrans_RdcVersion_vals[] = { { FRSTRANS_RDC_VERSION, "FRSTRANS_RDC_VERSION" }, { 0, NULL } @@ -266,8 +266,9 @@ static int frstrans_dissect_element_RdcFileInfo_rdc_version(tvbuff_t *tvb _U_, i static int frstrans_dissect_element_RdcFileInfo_rdc_minimum_compatible_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_RdcFileInfo_rdc_signature_levels(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_RdcFileInfo_compression_algorithm(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int frstrans_dissect_conformant_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int frstrans_dissect_element_CheckConnectivity_replica_set_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_CheckConnectivity_connection_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_EstablishConnection_replica_set_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -328,12 +329,6 @@ static int frstrans_dissect_element_InitializeFileTransferAsync_size_read(tvbuff static int frstrans_dissect_element_InitializeFileTransferAsync_size_read_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_InitializeFileTransferAsync_is_end_of_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int frstrans_dissect_element_InitializeFileTransferAsync_is_end_of_file_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int -cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, uint32_t param _U_, int hfindex) -{ - offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL); - return offset; -} /* IDL: enum { */ @@ -446,7 +441,7 @@ frstrans_dissect_element_VersionVector_db_guid(tvbuff_t *tvb _U_, int offset _U_ static int frstrans_dissect_element_VersionVector_low(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_VersionVector_low); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_VersionVector_low, NULL); return offset; } @@ -454,7 +449,7 @@ frstrans_dissect_element_VersionVector_low(tvbuff_t *tvb _U_, int offset _U_, pa static int frstrans_dissect_element_VersionVector_high(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_VersionVector_high); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_VersionVector_high, NULL); return offset; } @@ -616,7 +611,7 @@ frstrans_dissect_element_Update_uid_db_guid(tvbuff_t *tvb _U_, int offset _U_, p static int frstrans_dissect_element_Update_uid_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_Update_uid_version); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_Update_uid_version, NULL); return offset; } @@ -632,7 +627,7 @@ frstrans_dissect_element_Update_gsvn_db_guid(tvbuff_t *tvb _U_, int offset _U_, static int frstrans_dissect_element_Update_gsvn_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_Update_gsvn_version); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_Update_gsvn_version, NULL); return offset; } @@ -648,7 +643,7 @@ frstrans_dissect_element_Update_parent_db_guid(tvbuff_t *tvb _U_, int offset _U_ static int frstrans_dissect_element_Update_parent_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_Update_parent_version); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_Update_parent_version, NULL); return offset; } @@ -656,9 +651,11 @@ frstrans_dissect_element_Update_parent_version(tvbuff_t *tvb _U_, int offset _U_ static int frstrans_dissect_element_Update_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_vstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frstrans_frstrans_Update_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_frstrans_frstrans_Update_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -916,7 +913,7 @@ frstrans_dissect_struct_EpoqueVector(tvbuff_t *tvb _U_, int offset _U_, packet_i static int frstrans_dissect_element_AsyncVersionVectorResponse_vv_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_AsyncVersionVectorResponse_vv_generation); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_AsyncVersionVectorResponse_vv_generation, NULL); return offset; } @@ -940,7 +937,11 @@ frstrans_dissect_element_AsyncVersionVectorResponse_version_vector(tvbuff_t *tvb static int frstrans_dissect_element_AsyncVersionVectorResponse_version_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_AsyncVersionVectorResponse_version_vector__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, frstrans_dissect_element_AsyncVersionVectorResponse_version_vector__); return offset; } @@ -972,7 +973,11 @@ frstrans_dissect_element_AsyncVersionVectorResponse_epoque_vector(tvbuff_t *tvb static int frstrans_dissect_element_AsyncVersionVectorResponse_epoque_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_AsyncVersionVectorResponse_epoque_vector__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, frstrans_dissect_element_AsyncVersionVectorResponse_epoque_vector__); return offset; } @@ -1342,8 +1347,9 @@ frstrans_dissect_RdcParameterUnion(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_frstrans_frstrans_RdcParameterUnion, &item, "frstrans_RdcParameterUnion"); } + UNION_ALIGN_TO_3_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_3_BYTES; + UNION_ALIGN_TO_3_BYTES; switch(level) { case FRSTRANS_RDC_FILTER_GENERIC: @@ -1378,9 +1384,9 @@ frstrans_dissect_element_RdcParameters_rdc_chunker_algorithm(tvbuff_t *tvb _U_, } static int -frstrans_dissect_element_RdcParameters_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rdc_chunker_algorithm) +frstrans_dissect_element_RdcParameters_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t rdc_chunker_algorithm) { - offset = frstrans_dissect_RdcParameterUnion(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RdcParameters_u, *rdc_chunker_algorithm); + offset = frstrans_dissect_RdcParameterUnion(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RdcParameters_u, rdc_chunker_algorithm); return offset; } @@ -1404,7 +1410,7 @@ frstrans_dissect_struct_RdcParameters(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = frstrans_dissect_element_RdcParameters_rdc_chunker_algorithm(tvb, offset, pinfo, tree, di, drep, &rdc_chunker_algorithm); - offset = frstrans_dissect_element_RdcParameters_u(tvb, offset, pinfo, tree, di, drep, &rdc_chunker_algorithm); + offset = frstrans_dissect_element_RdcParameters_u(tvb, offset, pinfo, tree, di, drep, rdc_chunker_algorithm); proto_item_set_len(item, offset-old_offset); @@ -1489,7 +1495,7 @@ frstrans_dissect_enum_RdcCompressionAlgorithm(tvbuff_t *tvb _U_, int offset _U_, static int frstrans_dissect_element_RdcFileInfo_on_disk_file_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_RdcFileInfo_on_disk_file_size); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RdcFileInfo_on_disk_file_size, NULL); return offset; } @@ -1497,7 +1503,7 @@ frstrans_dissect_element_RdcFileInfo_on_disk_file_size(tvbuff_t *tvb _U_, int of static int frstrans_dissect_element_RdcFileInfo_file_size_estimate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_RdcFileInfo_file_size_estimate); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RdcFileInfo_file_size_estimate, NULL); return offset; } @@ -1535,9 +1541,10 @@ frstrans_dissect_element_RdcFileInfo_compression_algorithm(tvbuff_t *tvb _U_, in } static int -frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters_); return offset; } @@ -1550,13 +1557,24 @@ frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters_(tvbuff_t *tvb _U_, i return offset; } +static int +frstrans_dissect_conformant_RdcFileInfo_rdc_filter_parameters(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int frstrans_dissect_struct_RdcFileInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_rdc_filter_parameters = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = frstrans_dissect_conformant_RdcFileInfo_rdc_filter_parameters(tvb, offset, pinfo, parent_tree, di, drep, &nga_rdc_filter_parameters); + ALIGN_TO_8_BYTES; old_offset = offset; @@ -1578,16 +1596,12 @@ frstrans_dissect_struct_RdcFileInfo(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = frstrans_dissect_element_RdcFileInfo_compression_algorithm(tvb, offset, pinfo, tree, di, drep); - offset = frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvb, offset, pinfo, tree, di, drep); + offset = frstrans_dissect_element_RdcFileInfo_rdc_filter_parameters(tvb, offset, pinfo, tree, di, drep, &nga_rdc_filter_parameters); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } - return offset; } @@ -1850,7 +1864,11 @@ frstrans_dissect_element_RequestUpdates_version_vector_diff(tvbuff_t *tvb _U_, i static int frstrans_dissect_element_RequestUpdates_version_vector_diff_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_RequestUpdates_version_vector_diff__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, frstrans_dissect_element_RequestUpdates_version_vector_diff__); return offset; } @@ -1874,7 +1892,13 @@ frstrans_dissect_element_RequestUpdates_frs_update(tvbuff_t *tvb _U_, int offset static int frstrans_dissect_element_RequestUpdates_frs_update_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_RequestUpdates_frs_update__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, frstrans_dissect_element_RequestUpdates_frs_update__); return offset; } @@ -1946,7 +1970,7 @@ frstrans_dissect_element_RequestUpdates_gvsn_version(tvbuff_t *tvb _U_, int offs static int frstrans_dissect_element_RequestUpdates_gvsn_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_RequestUpdates_gvsn_version); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RequestUpdates_gvsn_version, NULL); return offset; } @@ -2059,7 +2083,7 @@ frstrans_dissect_element_RequestVersionVector_change_type(tvbuff_t *tvb _U_, int static int frstrans_dissect_element_RequestVersionVector_vv_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_frstrans_frstrans_RequestVersionVector_vv_generation); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_frstrans_frstrans_RequestVersionVector_vv_generation, NULL); return offset; } @@ -2386,7 +2410,13 @@ frstrans_dissect_element_InitializeFileTransferAsync_data_buffer(tvbuff_t *tvb _ static int frstrans_dissect_element_InitializeFileTransferAsync_data_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, frstrans_dissect_element_InitializeFileTransferAsync_data_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, frstrans_dissect_element_InitializeFileTransferAsync_data_buffer__); return offset; } diff --git a/epan/dissectors/packet-dcerpc-fsrvp.c b/epan/dissectors/packet-dcerpc-fsrvp.c index b6b15abe8a..e233ca1b7a 100644 --- a/epan/dissectors/packet-dcerpc-fsrvp.c +++ b/epan/dissectors/packet-dcerpc-fsrvp.c @@ -254,9 +254,13 @@ fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC(tvbuff_t *tvb _U_, i static int fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -273,9 +277,13 @@ fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName(tvbuff_t *tvb static int fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -361,8 +369,9 @@ fsrvp_dissect_fssagent_share_mapping(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_fsrvp_fssagent_share_mapping, &item, "fssagent_share_mapping"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 1: @@ -540,9 +549,13 @@ fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvbuff_t *tvb _U_, int offset static int fsrvp_dissect_element_AddToShadowCopySet_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -721,9 +734,13 @@ fsrvp_dissect_element_IsPathSupported_ShareName(tvbuff_t *tvb _U_, int offset _U static int fsrvp_dissect_element_IsPathSupported_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathSupported_ShareName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathSupported_ShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -764,9 +781,13 @@ fsrvp_dissect_element_IsPathSupported_OwnerMachineName_(tvbuff_t *tvb _U_, int o static int fsrvp_dissect_element_IsPathSupported_OwnerMachineName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -818,9 +839,13 @@ fsrvp_dissect_element_IsPathShadowCopied_ShareName(tvbuff_t *tvb _U_, int offset static int fsrvp_dissect_element_IsPathShadowCopied_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -920,9 +945,13 @@ fsrvp_dissect_element_GetShareMapping_ShareName(tvbuff_t *tvb _U_, int offset _U static int fsrvp_dissect_element_GetShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_GetShareMapping_ShareName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_GetShareMapping_ShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1004,9 +1033,13 @@ fsrvp_dissect_element_DeleteShareMapping_ShareName(tvbuff_t *tvb _U_, int offset static int fsrvp_dissect_element_DeleteShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_DeleteShareMapping_ShareName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_fsrvp_fsrvp_DeleteShareMapping_ShareName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-iwbemlevel1login.c b/epan/dissectors/packet-dcerpc-iwbemlevel1login.c index 61d03421b4..d4e2d26550 100644 --- a/epan/dissectors/packet-dcerpc-iwbemlevel1login.c +++ b/epan/dissectors/packet-dcerpc-iwbemlevel1login.c @@ -78,7 +78,8 @@ static e_guid_t uuid_dcerpc_IWbemLevel1Login = { static uint16_t ver_dcerpc_IWbemLevel1Login = 0; static int IWbemLevel1Login_dissect_element_IWbemServices_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int IWbemLevel1Login_dissect_element_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int IWbemLevel1Login_dissect_element_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); +static int IWbemLevel1Login_dissect_conformant_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int IWbemLevel1Login_dissect_element_EstablishPosition_orpcthis(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int IWbemLevel1Login_dissect_element_EstablishPosition_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int IWbemLevel1Login_dissect_element_EstablishPosition_reserved1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -210,16 +211,15 @@ IWbemLevel1Login_dissect_element_NTLMLogin_orpcthat_(tvbuff_t *tvb _U_, int offs return offset; } static int -IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep _U_) -; +IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep); static int -IWbemLevel1Login_dissect_element_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +IWbemLevel1Login_dissect_element_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep, &IWbemLevel1Login_dissect_element_IWbemServices_services_); + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, IWbemLevel1Login_dissect_element_IWbemServices_services_); return offset; } static int -IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep _U_) +IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep) { proto_item *sub_item; proto_tree *sub_tree; @@ -289,14 +289,25 @@ IWbemLevel1Login_dissect_element_IWbemServices_count(tvbuff_t *tvb _U_, int offs return offset; } +static int +IWbemLevel1Login_dissect_conformant_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int IWbemLevel1Login_dissect_struct_IWbemServices(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_services = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = IWbemLevel1Login_dissect_conformant_IWbemServices_services(tvb, offset, pinfo, parent_tree, di, drep, &nga_services); + di->no_align = true; old_offset = offset; @@ -308,7 +319,7 @@ IWbemLevel1Login_dissect_struct_IWbemServices(tvbuff_t *tvb _U_, int offset _U_, offset = IWbemLevel1Login_dissect_element_IWbemServices_count(tvb, offset, pinfo, tree, di, drep); - offset = IWbemLevel1Login_dissect_element_IWbemServices_services(tvb, offset, pinfo, tree, di, drep); + offset = IWbemLevel1Login_dissect_element_IWbemServices_services(tvb, offset, pinfo, tree, di, drep, &nga_services); proto_item_set_len(item, offset-old_offset); @@ -405,9 +416,13 @@ IWbemLevel1Login_dissect_element_EstablishPosition_reserved1(tvbuff_t *tvb _U_, static int IWbemLevel1Login_dissect_element_EstablishPosition_reserved1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_EstablishPosition_reserved1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_EstablishPosition_reserved1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -497,9 +512,13 @@ IWbemLevel1Login_dissect_element_RequestChallenge_reserved1(tvbuff_t *tvb _U_, i static int IWbemLevel1Login_dissect_element_RequestChallenge_reserved1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_RequestChallenge_reserved1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_RequestChallenge_reserved1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -516,9 +535,13 @@ IWbemLevel1Login_dissect_element_RequestChallenge_reserved2(tvbuff_t *tvb _U_, i static int IWbemLevel1Login_dissect_element_RequestChallenge_reserved2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_RequestChallenge_reserved2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_RequestChallenge_reserved2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -543,7 +566,13 @@ IWbemLevel1Login_dissect_element_RequestChallenge_reserved3(tvbuff_t *tvb _U_, i static int IWbemLevel1Login_dissect_element_RequestChallenge_reserved3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, IWbemLevel1Login_dissect_element_RequestChallenge_reserved3__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, IWbemLevel1Login_dissect_element_RequestChallenge_reserved3__); return offset; } @@ -608,9 +637,13 @@ IWbemLevel1Login_dissect_element_WBEMLogin_reserved1(tvbuff_t *tvb _U_, int offs static int IWbemLevel1Login_dissect_element_WBEMLogin_reserved1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_WBEMLogin_reserved1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_WBEMLogin_reserved1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -627,7 +660,13 @@ IWbemLevel1Login_dissect_element_WBEMLogin_reserved2(tvbuff_t *tvb _U_, int offs static int IWbemLevel1Login_dissect_element_WBEMLogin_reserved2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, IWbemLevel1Login_dissect_element_WBEMLogin_reserved2__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, IWbemLevel1Login_dissect_element_WBEMLogin_reserved2__); return offset; } @@ -754,9 +793,13 @@ IWbemLevel1Login_dissect_element_NTLMLogin_wszNetworkResource(tvbuff_t *tvb _U_, static int IWbemLevel1Login_dissect_element_NTLMLogin_wszNetworkResource_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_NTLMLogin_wszNetworkResource, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_NTLMLogin_wszNetworkResource, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -773,9 +816,13 @@ IWbemLevel1Login_dissect_element_NTLMLogin_wszPreferredLocale(tvbuff_t *tvb _U_, static int IWbemLevel1Login_dissect_element_NTLMLogin_wszPreferredLocale_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_NTLMLogin_wszPreferredLocale, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLevel1Login_NTLMLogin_wszPreferredLocale, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-iwbemloginclientid.c b/epan/dissectors/packet-dcerpc-iwbemloginclientid.c index 8bed424e6b..483cc675e9 100644 --- a/epan/dissectors/packet-dcerpc-iwbemloginclientid.c +++ b/epan/dissectors/packet-dcerpc-iwbemloginclientid.c @@ -211,9 +211,13 @@ IWbemLoginClientID_dissect_element_SetClientInfo_wszClientMachine(tvbuff_t *tvb static int IWbemLoginClientID_dissect_element_SetClientInfo_wszClientMachine_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientID_SetClientInfo_wszClientMachine, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientID_SetClientInfo_wszClientMachine, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-iwbemloginclientidex.c b/epan/dissectors/packet-dcerpc-iwbemloginclientidex.c index ddb45ffd0f..1e90f3954c 100644 --- a/epan/dissectors/packet-dcerpc-iwbemloginclientidex.c +++ b/epan/dissectors/packet-dcerpc-iwbemloginclientidex.c @@ -274,9 +274,13 @@ IWbemLoginClientIDEx_dissect_element_SetClientInfoEx_ClientMachine(tvbuff_t *tvb static int IWbemLoginClientIDEx_dissect_element_SetClientInfoEx_ClientMachine_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientIDEx_SetClientInfoEx_ClientMachine, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientIDEx_SetClientInfoEx_ClientMachine, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -293,9 +297,13 @@ IWbemLoginClientIDEx_dissect_element_SetClientInfoEx_ClientMachineFQDN(tvbuff_t static int IWbemLoginClientIDEx_dissect_element_SetClientInfoEx_ClientMachineFQDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientIDEx_SetClientInfoEx_ClientMachineFQDN, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemLoginClientIDEx_SetClientInfoEx_ClientMachineFQDN, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-iwbemservices.c b/epan/dissectors/packet-dcerpc-iwbemservices.c index d09422a914..537f26efa9 100644 --- a/epan/dissectors/packet-dcerpc-iwbemservices.c +++ b/epan/dissectors/packet-dcerpc-iwbemservices.c @@ -69,10 +69,12 @@ static e_guid_t uuid_dcerpc_IWbemServices = { static uint16_t ver_dcerpc_IWbemServices = 0; static int IWbemServices_dissect_element_IWbemClassObject_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int IWbemServices_dissect_element_IWbemClassObject_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int IWbemServices_dissect_element_IWbemClassObject_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); +static int IWbemServices_dissect_conformant_IWbemClassObject_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int IWbemServices_dissect_element_MInterfacePointer_ulCntData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int IWbemServices_dissect_element_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int IWbemServices_dissect_element_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int IWbemServices_dissect_element_MInterfacePointer_abData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int IWbemServices_dissect_conformant_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int IWbemServices_dissect_element_IWbemContext_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int IWbemServices_dissect_element_IWbemContext_intPtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int IWbemServices_dissect_element_IWbemContext_intPtr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -99,7 +101,7 @@ static int IWbemServices_dissect_element_ExecMethod_orpcthat(tvbuff_t *tvb _U_, static int IWbemServices_dissect_element_ExecMethod_orpcthat_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); #include "packet-dcom.h" static int -IWbemServices_dissect_element_IWbemClassObject_objects_(tvbuff_t *tvb, int offset, int length, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep); +IWbemServices_dissect_element_IWbemClassObject_objects_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep); static int IWbemServices_dissect_element_GetObject_strObjectPath_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep); extern void register_dcom_wmio (void); @@ -144,15 +146,14 @@ IWbemServices_dissect_element_ExecMethod_orpcthat_(tvbuff_t *tvb, int offset, pa return dissect_dcom_that(tvb, offset, pinfo, sub_tree, di, drep); } static int -IWbemServices_dissect_element_IWbemClassObject_objects(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep) +IWbemServices_dissect_element_IWbemClassObject_objects(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, struct ndr_generic_array *nga) { - return dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep, &IWbemServices_dissect_element_IWbemClassObject_objects_); + return dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, IWbemServices_dissect_element_IWbemClassObject_objects_); } static int -IWbemServices_dissect_element_IWbemClassObject_objects_(tvbuff_t *tvb, int offset, int length, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep) +IWbemServices_dissect_element_IWbemClassObject_objects_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep) { - dissect_dcom_OBJREF(tvb, offset, pinfo, tree, di, drep, hf_IWbemServices_IWbemClassObject_objects, NULL); - return offset + length; + return dissect_dcom_OBJREF(tvb, offset, pinfo, tree, di, drep, hf_IWbemServices_IWbemClassObject_objects, NULL); } static int IWbemServices_dissect_element_GetObject_strObjectPath_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep) @@ -249,13 +250,24 @@ IWbemServices_dissect_element_IWbemClassObject_count(tvbuff_t *tvb _U_, int offs return offset; } +static int +IWbemServices_dissect_conformant_IWbemClassObject_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int IWbemServices_dissect_struct_IWbemClassObject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_objects = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = IWbemServices_dissect_conformant_IWbemClassObject_objects(tvb, offset, pinfo, parent_tree, di, drep, &nga_objects); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -267,16 +279,12 @@ IWbemServices_dissect_struct_IWbemClassObject(tvbuff_t *tvb _U_, int offset _U_, offset = IWbemServices_dissect_element_IWbemClassObject_count(tvb, offset, pinfo, tree, di, drep); - offset = IWbemServices_dissect_element_IWbemClassObject_objects(tvb, offset, pinfo, tree, di, drep); + offset = IWbemServices_dissect_element_IWbemClassObject_objects(tvb, offset, pinfo, tree, di, drep, &nga_objects); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -295,9 +303,10 @@ IWbemServices_dissect_element_MInterfacePointer_ulCntData(tvbuff_t *tvb _U_, int } static int -IWbemServices_dissect_element_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +IWbemServices_dissect_element_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, IWbemServices_dissect_element_MInterfacePointer_abData_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, IWbemServices_dissect_element_MInterfacePointer_abData_); return offset; } @@ -310,13 +319,24 @@ IWbemServices_dissect_element_MInterfacePointer_abData_(tvbuff_t *tvb _U_, int o return offset; } +static int +IWbemServices_dissect_conformant_MInterfacePointer_abData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int IWbemServices_dissect_struct_MInterfacePointer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_abData = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = IWbemServices_dissect_conformant_MInterfacePointer_abData(tvb, offset, pinfo, parent_tree, di, drep, &nga_abData); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -328,16 +348,12 @@ IWbemServices_dissect_struct_MInterfacePointer(tvbuff_t *tvb _U_, int offset _U_ offset = IWbemServices_dissect_element_MInterfacePointer_ulCntData(tvb, offset, pinfo, tree, di, drep); - offset = IWbemServices_dissect_element_MInterfacePointer_abData(tvb, offset, pinfo, tree, di, drep); + offset = IWbemServices_dissect_element_MInterfacePointer_abData(tvb, offset, pinfo, tree, di, drep, &nga_abData); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -1128,9 +1144,13 @@ IWbemServices_dissect_element_ExecMethod_strObjectPath(tvbuff_t *tvb _U_, int of static int IWbemServices_dissect_element_ExecMethod_strObjectPath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemServices_ExecMethod_strObjectPath, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemServices_ExecMethod_strObjectPath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1147,9 +1167,13 @@ IWbemServices_dissect_element_ExecMethod_strMethodName(tvbuff_t *tvb _U_, int of static int IWbemServices_dissect_element_ExecMethod_strMethodName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemServices_ExecMethod_strMethodName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_IWbemServices_ExecMethod_strMethodName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-lsa.c b/epan/dissectors/packet-dcerpc-lsa.c index c1815c5a0c..5f482368a3 100644 --- a/epan/dissectors/packet-dcerpc-lsa.c +++ b/epan/dissectors/packet-dcerpc-lsa.c @@ -983,8 +983,9 @@ static int lsarpc_dissect_element_lsa_LUIDAttribute_luid(tvbuff_t *tvb _U_, int static int lsarpc_dissect_element_lsa_LUIDAttribute_attribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_PrivilegeSet_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int lsarpc_dissect_element_lsa_PrivilegeSet_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int lsarpc_dissect_element_lsa_DATA_BUF_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_DATA_BUF_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_DATA_BUF_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1271,7 +1272,7 @@ static int lsarpc_dissect_element_lsa_ForestTrustData_data(tvbuff_t *tvb _U_, in static int lsarpc_dissect_element_lsa_ForestTrustRecord_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustRecord_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); static int lsarpc_dissect_element_lsa_ForestTrustRecord_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); +static int lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type); static int lsarpc_dissect_element_lsa_ForestTrustInformation_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustInformation_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustInformation_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1307,7 +1308,7 @@ static int lsarpc_dissect_element_lsa_ForestTrustData2_scanner_info(tvbuff_t *tv static int lsarpc_dissect_element_lsa_ForestTrustRecord2_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustRecord2_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); static int lsarpc_dissect_element_lsa_ForestTrustRecord2_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); +static int lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type); static int lsarpc_dissect_element_lsa_ForestTrustInformation2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustInformation2_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int lsarpc_dissect_element_lsa_ForestTrustInformation2_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1881,8 +1882,8 @@ lsarpc_dissect_bitmap_lsa_SecretAccessMask(tvbuff_t *tvb, int offset, packet_inf &lsarpc_secret_access_mask_info, NULL); return offset; } -/* TODO: not called, so couldn't make static. Delete? */ -int +/* TODO: not called... Delete? */ +static int _U_ lsarpc_dissect_bitmap_lsa_DomainAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_) { offset = dissect_nt_access_mask( @@ -2230,7 +2231,11 @@ lsarpc_dissect_element_lsa_Strings_names(tvbuff_t *tvb _U_, int offset _U_, pack static int lsarpc_dissect_element_lsa_Strings_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_Strings_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_Strings_names__); return offset; } @@ -2308,7 +2313,13 @@ lsarpc_dissect_element_lsa_AsciiString_string(tvbuff_t *tvb _U_, int offset _U_, static int lsarpc_dissect_element_lsa_AsciiString_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AsciiString_string__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AsciiString_string__); return offset; } @@ -2388,7 +2399,13 @@ lsarpc_dissect_element_lsa_AsciiStringLarge_string(tvbuff_t *tvb _U_, int offset static int lsarpc_dissect_element_lsa_AsciiStringLarge_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AsciiStringLarge_string__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AsciiStringLarge_string__); return offset; } @@ -2468,7 +2485,13 @@ lsarpc_dissect_element_lsa_BinaryString_array(tvbuff_t *tvb _U_, int offset _U_, static int lsarpc_dissect_element_lsa_BinaryString_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_BinaryString_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_BinaryString_array__); return offset; } @@ -2645,7 +2668,11 @@ lsarpc_dissect_element_lsa_PrivArray_privs(tvbuff_t *tvb _U_, int offset _U_, pa static int lsarpc_dissect_element_lsa_PrivArray_privs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_PrivArray_privs__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_PrivArray_privs__); return offset; } @@ -2831,9 +2858,13 @@ lsarpc_dissect_element_lsa_ObjectAttribute_object_name(tvbuff_t *tvb _U_, int of static int lsarpc_dissect_element_lsa_ObjectAttribute_object_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_ObjectAttribute_object_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_ObjectAttribute_object_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3166,7 +3197,11 @@ lsarpc_dissect_element_lsa_AuditEventsInfo_settings(tvbuff_t *tvb _U_, int offse static int lsarpc_dissect_element_lsa_AuditEventsInfo_settings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AuditEventsInfo_settings__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AuditEventsInfo_settings__); return offset; } @@ -3940,8 +3975,9 @@ lsarpc_dissect_lsa_PolicyInformation(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_PolicyInformation, &item, "lsa_PolicyInformation"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case LSA_POLICY_INFO_AUDIT_LOG: @@ -4080,7 +4116,11 @@ lsarpc_dissect_element_lsa_SidArray_sids(tvbuff_t *tvb _U_, int offset _U_, pack static int lsarpc_dissect_element_lsa_SidArray_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_SidArray_sids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_SidArray_sids__); return offset; } @@ -4149,7 +4189,11 @@ lsarpc_dissect_element_lsa_DomainList_domains(tvbuff_t *tvb _U_, int offset _U_, static int lsarpc_dissect_element_lsa_DomainList_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DomainList_domains__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DomainList_domains__); return offset; } @@ -4311,7 +4355,11 @@ lsarpc_dissect_element_lsa_TransSidArray_sids(tvbuff_t *tvb _U_, int offset _U_, static int lsarpc_dissect_element_lsa_TransSidArray_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray_sids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray_sids__); return offset; } @@ -4381,7 +4429,11 @@ lsarpc_dissect_element_lsa_RefDomainList_domains(tvbuff_t *tvb _U_, int offset _ static int lsarpc_dissect_element_lsa_RefDomainList_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_RefDomainList_domains__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_RefDomainList_domains__); return offset; } @@ -4549,7 +4601,11 @@ lsarpc_dissect_element_lsa_TransNameArray_names(tvbuff_t *tvb _U_, int offset _U static int lsarpc_dissect_element_lsa_TransNameArray_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransNameArray_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransNameArray_names__); return offset; } @@ -4670,9 +4726,10 @@ lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvbuff_t *tvb _U_, int offset _U } static int -lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_PrivilegeSet_set_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, lsarpc_dissect_element_lsa_PrivilegeSet_set_); return offset; } @@ -4685,13 +4742,24 @@ lsarpc_dissect_element_lsa_PrivilegeSet_set_(tvbuff_t *tvb _U_, int offset _U_, return offset; } +static int +lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int lsarpc_dissect_struct_lsa_PrivilegeSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_set = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvb, offset, pinfo, parent_tree, di, drep, &nga_set); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -4705,16 +4773,12 @@ lsarpc_dissect_struct_lsa_PrivilegeSet(tvbuff_t *tvb _U_, int offset _U_, packet offset = lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvb, offset, pinfo, tree, di, drep); - offset = lsarpc_dissect_element_lsa_PrivilegeSet_set(tvb, offset, pinfo, tree, di, drep); + offset = lsarpc_dissect_element_lsa_PrivilegeSet_set(tvb, offset, pinfo, tree, di, drep, &nga_set); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -4752,7 +4816,13 @@ lsarpc_dissect_element_lsa_DATA_BUF_data(tvbuff_t *tvb _U_, int offset _U_, pack static int lsarpc_dissect_element_lsa_DATA_BUF_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DATA_BUF_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DATA_BUF_data__); return offset; } @@ -4823,7 +4893,11 @@ lsarpc_dissect_element_lsa_DATA_BUF2_data(tvbuff_t *tvb _U_, int offset _U_, pac static int lsarpc_dissect_element_lsa_DATA_BUF2_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DATA_BUF2_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DATA_BUF2_data__); return offset; } @@ -5075,7 +5149,11 @@ lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names(tvbuff_t *tv static int lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names__); return offset; } @@ -5963,7 +6041,11 @@ lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data(tvbu static int lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data__); return offset; } @@ -6267,8 +6349,9 @@ lsarpc_dissect_lsa_TrustedDomainInfo(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_TrustedDomainInfo, &item, "lsa_TrustedDomainInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case LSA_TRUSTED_DOMAIN_INFO_NAME: @@ -6402,9 +6485,13 @@ lsarpc_dissect_element_lsa_RightAttribute_name(tvbuff_t *tvb _U_, int offset _U_ static int lsarpc_dissect_element_lsa_RightAttribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_RightAttribute_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_RightAttribute_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6464,7 +6551,11 @@ lsarpc_dissect_element_lsa_RightSet_names(tvbuff_t *tvb _U_, int offset _U_, pac static int lsarpc_dissect_element_lsa_RightSet_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_RightSet_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_RightSet_names__); return offset; } @@ -6533,7 +6624,11 @@ lsarpc_dissect_element_lsa_DomainListEx_domains(tvbuff_t *tvb _U_, int offset _U static int lsarpc_dissect_element_lsa_DomainListEx_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DomainListEx_domains__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DomainListEx_domains__); return offset; } @@ -6866,8 +6961,9 @@ lsarpc_dissect_lsa_DomainInformationPolicy(tvbuff_t *tvb _U_, int offset _U_, pa tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_DomainInformationPolicy, &item, "lsa_DomainInformationPolicy"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case LSA_DOMAIN_INFO_POLICY_QOS: @@ -6987,7 +7083,11 @@ lsarpc_dissect_element_lsa_TransNameArray2_names(tvbuff_t *tvb _U_, int offset _ static int lsarpc_dissect_element_lsa_TransNameArray2_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransNameArray2_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransNameArray2_names__); return offset; } @@ -7171,7 +7271,11 @@ lsarpc_dissect_element_lsa_TransSidArray2_sids(tvbuff_t *tvb _U_, int offset _U_ static int lsarpc_dissect_element_lsa_TransSidArray2_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray2_sids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray2_sids__); return offset; } @@ -7323,7 +7427,11 @@ lsarpc_dissect_element_lsa_TransSidArray3_sids(tvbuff_t *tvb _U_, int offset _U_ static int lsarpc_dissect_element_lsa_TransSidArray3_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray3_sids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray3_sids__); return offset; } @@ -7459,7 +7567,11 @@ lsarpc_dissect_element_lsa_ForestTrustBinaryData_data(tvbuff_t *tvb _U_, int off static int lsarpc_dissect_element_lsa_ForestTrustBinaryData_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustBinaryData_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustBinaryData_data__); return offset; } @@ -7628,8 +7740,9 @@ lsarpc_dissect_lsa_ForestTrustData(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_ForestTrustData, &item, "lsa_ForestTrustData"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case LSA_FOREST_TRUST_TOP_LEVEL_NAME: @@ -7686,9 +7799,9 @@ lsarpc_dissect_element_lsa_ForestTrustRecord_time(tvbuff_t *tvb _U_, int offset } static int -lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) +lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type) { - offset = lsarpc_dissect_lsa_ForestTrustData(tvb, offset, pinfo, tree, di, drep, hf_lsarpc_lsa_ForestTrustRecord_forest_trust_data, *type); + offset = lsarpc_dissect_lsa_ForestTrustData(tvb, offset, pinfo, tree, di, drep, hf_lsarpc_lsa_ForestTrustRecord_forest_trust_data, type); return offset; } @@ -7716,7 +7829,7 @@ lsarpc_dissect_struct_lsa_ForestTrustRecord(tvbuff_t *tvb _U_, int offset _U_, p offset = lsarpc_dissect_element_lsa_ForestTrustRecord_time(tvb, offset, pinfo, tree, di, drep); - offset = lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvb, offset, pinfo, tree, di, drep, &type); + offset = lsarpc_dissect_element_lsa_ForestTrustRecord_forest_trust_data(tvb, offset, pinfo, tree, di, drep, type); proto_item_set_len(item, offset-old_offset); @@ -7754,7 +7867,11 @@ lsarpc_dissect_element_lsa_ForestTrustInformation_entries(tvbuff_t *tvb _U_, int static int lsarpc_dissect_element_lsa_ForestTrustInformation_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustInformation_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustInformation_entries__); return offset; } @@ -7927,7 +8044,11 @@ lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries(tvbuff_t *tvb _U_, i static int lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries__); return offset; } @@ -8090,8 +8211,9 @@ lsarpc_dissect_lsa_revision_info(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_revision_info, &item, "lsa_revision_info"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case 1: @@ -8165,8 +8287,9 @@ lsarpc_dissect_lsa_ForestTrustData2(tvbuff_t *tvb _U_, int offset _U_, packet_in tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_lsarpc_lsa_ForestTrustData2, &item, "lsa_ForestTrustData2"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case LSA_FOREST_TRUST_TOP_LEVEL_NAME: @@ -8227,9 +8350,9 @@ lsarpc_dissect_element_lsa_ForestTrustRecord2_time(tvbuff_t *tvb _U_, int offset } static int -lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) +lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t type) { - offset = lsarpc_dissect_lsa_ForestTrustData2(tvb, offset, pinfo, tree, di, drep, hf_lsarpc_lsa_ForestTrustRecord2_forest_trust_data, *type); + offset = lsarpc_dissect_lsa_ForestTrustData2(tvb, offset, pinfo, tree, di, drep, hf_lsarpc_lsa_ForestTrustRecord2_forest_trust_data, type); return offset; } @@ -8257,7 +8380,7 @@ lsarpc_dissect_struct_lsa_ForestTrustRecord2(tvbuff_t *tvb _U_, int offset _U_, offset = lsarpc_dissect_element_lsa_ForestTrustRecord2_time(tvb, offset, pinfo, tree, di, drep); - offset = lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvb, offset, pinfo, tree, di, drep, &type); + offset = lsarpc_dissect_element_lsa_ForestTrustRecord2_forest_trust_data(tvb, offset, pinfo, tree, di, drep, type); proto_item_set_len(item, offset-old_offset); @@ -8295,7 +8418,11 @@ lsarpc_dissect_element_lsa_ForestTrustInformation2_entries(tvbuff_t *tvb _U_, in static int lsarpc_dissect_element_lsa_ForestTrustInformation2_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustInformation2_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustInformation2_entries__); return offset; } @@ -8840,8 +8967,14 @@ lsarpc_dissect_element_lsa_QueryInfoPolicy_info(tvbuff_t *tvb _U_, int offset _U static int lsarpc_dissect_element_lsa_QueryInfoPolicy_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryInfoPolicy_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_PolicyInformation)",hf_lsarpc_lsa_QueryInfoPolicy_info); + di->switch_level = saved_switch_level; + return offset; } @@ -10327,8 +10460,14 @@ lsarpc_dissect_element_lsa_QueryTrustedDomainInfo_info(tvbuff_t *tvb _U_, int of static int lsarpc_dissect_element_lsa_QueryTrustedDomainInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryTrustedDomainInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_TrustedDomainInfo)",hf_lsarpc_lsa_QueryTrustedDomainInfo_info); + di->switch_level = saved_switch_level; + return offset; } @@ -11482,8 +11621,14 @@ lsarpc_dissect_element_lsa_QueryTrustedDomainInfoBySid_info(tvbuff_t *tvb _U_, i static int lsarpc_dissect_element_lsa_QueryTrustedDomainInfoBySid_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryTrustedDomainInfoBySid_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_TrustedDomainInfo)",hf_lsarpc_lsa_QueryTrustedDomainInfoBySid_info); + di->switch_level = saved_switch_level; + return offset; } @@ -11870,9 +12015,13 @@ lsarpc_dissect_element_lsa_OpenPolicy2_system_name(tvbuff_t *tvb _U_, int offset static int lsarpc_dissect_element_lsa_OpenPolicy2_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_OpenPolicy2_system_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_OpenPolicy2_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -11966,9 +12115,13 @@ lsarpc_dissect_element_lsa_GetUserName_system_name(tvbuff_t *tvb _U_, int offset static int lsarpc_dissect_element_lsa_GetUserName_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_GetUserName_system_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_GetUserName_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -12096,8 +12249,14 @@ lsarpc_dissect_element_lsa_QueryInfoPolicy2_info(tvbuff_t *tvb _U_, int offset _ static int lsarpc_dissect_element_lsa_QueryInfoPolicy2_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryInfoPolicy2_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_PolicyInformation)",hf_lsarpc_lsa_QueryInfoPolicy2_info); + di->switch_level = saved_switch_level; + return offset; } @@ -12267,8 +12426,14 @@ lsarpc_dissect_element_lsa_QueryTrustedDomainInfoByName_info(tvbuff_t *tvb _U_, static int lsarpc_dissect_element_lsa_QueryTrustedDomainInfoByName_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryTrustedDomainInfoByName_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_TrustedDomainInfo)",hf_lsarpc_lsa_QueryTrustedDomainInfoByName_info); + di->switch_level = saved_switch_level; + return offset; } @@ -12698,8 +12863,14 @@ lsarpc_dissect_element_lsa_QueryDomainInformationPolicy_info(tvbuff_t *tvb _U_, static int lsarpc_dissect_element_lsa_QueryDomainInformationPolicy_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_QueryDomainInformationPolicy_info__, NDR_POINTER_UNIQUE, "Pointer to Info (lsa_DomainInformationPolicy)",hf_lsarpc_lsa_QueryDomainInformationPolicy_info); + di->switch_level = saved_switch_level; + return offset; } @@ -15456,9 +15627,13 @@ lsarpc_dissect_element_lsa_OpenPolicy3_system_name(tvbuff_t *tvb _U_, int offset static int lsarpc_dissect_element_lsa_OpenPolicy3_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_OpenPolicy3_system_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_lsarpc_lsa_OpenPolicy3_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-mapi.c b/epan/dissectors/packet-dcerpc-mapi.c index d0aa751f62..8af75bdfee 100644 --- a/epan/dissectors/packet-dcerpc-mapi.c +++ b/epan/dissectors/packet-dcerpc-mapi.c @@ -5607,25 +5607,31 @@ const value_string mapi_ROP_OPNUM_vals[] = { { 0, NULL } }; static int mapi_dissect_element_SBinary_short_cb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SBinary_short_lpb_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MV_LONG_STRUCT_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MV_LONG_STRUCT_lpl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_LPSTR_lppszA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SLPSTRArray_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SLPSTRArray_strings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_LPWSTR_lppszW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SPLSTRArrayW_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SPLSTRArrayW_strings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SBinaryArray_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SBinaryArray_bin_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SGuidArray_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SGuidArray_lpguid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SRestriction_wrap_wrap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SRestriction_wrap_wrap_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SPropValue_wrap_wrap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5661,8 +5667,9 @@ const value_string mapi_BounceCode_vals[] = { { 0, NULL } }; static int mapi_dissect_element_ForwardDelegate_Action_RecipientCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ForwardDelegate_Action_RecipientBlock_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ActionData_MoveAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ActionData_CopyAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ActionData_ReplyAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5675,11 +5682,12 @@ static int mapi_dissect_element_ActionData_DelegateAction(tvbuff_t *tvb _U_, int static int mapi_dissect_element_ActionBlockData_ActionType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ActionType); static int mapi_dissect_element_ActionBlockData_ActionFlavor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ActionBlockData_ActionFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ActionType); +static int mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ActionType); static int mapi_dissect_element_ActionBlock_ActionBlockData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RuleAction_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_RuleAction_ActionBlock_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ShortArray_r_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ShortArray_r_lpi(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ShortArray_r_lpi_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5729,11 +5737,13 @@ static int mapi_dissect_element_SPropValue_CTR_object(tvbuff_t *tvb _U_, int off static int mapi_dissect_element_SPropValue_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SPropValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SPropValue_array_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SPropValue_array_lpProps_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SPropTagArray_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SPropTagArray_aulPropTag_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string mapi_ulRowFlags_vals[] = { { ROW_ADD, "ROW_ADD" }, { ROW_MODIFY, "ROW_MODIFY" }, @@ -5754,16 +5764,17 @@ static int mapi_dissect_element_OpenFolder_req_FolderId(tvbuff_t *tvb _U_, int o static int mapi_dissect_element_OpenFolder_req_OpenModeFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_Replicas_ServerCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_Replicas_CheapServerCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_OpenFolder_Replicas_Servers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_IsGhosted_Replicas(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_Success_HasRules(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_Success_IsGhosted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); -static int mapi_dissect_element_OpenFolder_Success_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); +static int mapi_dissect_element_OpenFolder_Success_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted); static int mapi_dissect_element_OpenFolder_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_repl_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenFolder_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_OpenFolder_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_OpenFolder_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); const value_string mapi_StringType_vals[] = { { StringType_NONE, "StringType_NONE" }, { StringType_EMPTY, "StringType_EMPTY" }, @@ -5776,7 +5787,7 @@ static int mapi_dissect_element_String_lpszA(tvbuff_t *tvb _U_, int offset _U_, static int mapi_dissect_element_String_lpszW_reduced(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_String_lpszW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_TypedString_StringType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *StringType); -static int mapi_dissect_element_TypedString_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *StringType); +static int mapi_dissect_element_TypedString_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t StringType); const value_string mapi_OpenMessage_OpenModeFlags_vals[] = { { ReadOnly, "ReadOnly" }, { ReadWrite, "ReadWrite" }, @@ -5845,12 +5856,13 @@ static int mapi_dissect_element_OpenMessage_Success_RecipientCount(tvbuff_t *tvb static int mapi_dissect_element_OpenMessage_Success_ColumnCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenMessage_Success_RecipientColumns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenMessage_Success_RowCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_OpenMessage_Success_recipients_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_OpenMessage_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenMessage_repl_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenMessage_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_OpenMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_OpenMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static const true_false_string TableFlags_TableFlags_Depth_tfs = { "TableFlags_Depth is SET", "TableFlags_Depth is NOT SET", @@ -5883,7 +5895,7 @@ static int mapi_dissect_element_GetHierarchyTable_repl_success_RowCount(tvbuff_t static int mapi_dissect_element_GetHierarchyTable_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetHierarchyTable_repl_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetHierarchyTable_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_GetHierarchyTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_GetHierarchyTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_GetContentsTable_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetContentsTable_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetContentsTable_req_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5892,7 +5904,7 @@ static int mapi_dissect_element_GetContentsTable_repl_success_RowCount(tvbuff_t static int mapi_dissect_element_GetContentsTable_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetContentsTable_repl_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetContentsTable_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_GetContentsTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_GetContentsTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_CreateMessage_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_req_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5901,24 +5913,25 @@ static int mapi_dissect_element_CreateMessage_req_FolderId(tvbuff_t *tvb _U_, in static int mapi_dissect_element_CreateMessage_req_AssociatedFlag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_MessageId_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_repl_success_HasMessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasMessageId); -static int mapi_dissect_element_CreateMessage_repl_success_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasMessageId); +static int mapi_dissect_element_CreateMessage_repl_success_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t HasMessageId); static int mapi_dissect_element_CreateMessage_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_repl_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateMessage_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_CreateMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_CreateMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_GetProps_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_req_PropertySizeLimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_req_WantUnicode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetProps_repl_success_layout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_repl_success_prop_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_repl_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetProps_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_GetProps_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_GetProps_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_GetPropsAll_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropsAll_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropsAll_req_PropertySizeLimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5927,12 +5940,13 @@ static int mapi_dissect_element_GetPropsAll_repl_success_properties(tvbuff_t *tv static int mapi_dissect_element_GetPropsAll_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropsAll_repl_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropsAll_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_GetPropsAll_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_GetPropsAll_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_GetPropList_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropList_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPropList_repl_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetPropList_repl_tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_PropertyProblem_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PropertyProblem_property_tag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PropertyProblem_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5940,16 +5954,19 @@ static int mapi_dissect_element_SetProps_req_LogonId(tvbuff_t *tvb _U_, int offs static int mapi_dissect_element_SetProps_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetProps_req_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetProps_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetProps_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteProps_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeleteProps_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeleteProps_req_PropertyTagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteProps_req_tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteProps_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteProps_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string mapi_SaveFlags_vals[] = { { KeepOpenReadOnly, "KeepOpenReadOnly" }, { KeepOpenReadWrite, "KeepOpenReadWrite" }, @@ -5982,8 +5999,9 @@ static int mapi_dissect_element_ModifyRecipients_req_prop_count(tvbuff_t *tvb _U static int mapi_dissect_element_ModifyRecipients_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyRecipients_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyRecipients_req_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ModifyRecipients_req_RecipientRow_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ReadRecipients_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadRecipients_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadRecipients_req_RowId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -5994,8 +6012,9 @@ static int mapi_dissect_element_ReadRecipientRow_CodePageId(tvbuff_t *tvb _U_, i static int mapi_dissect_element_ReadRecipientRow_ulReserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadRecipientRow_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadRecipients_repl_RowCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ReadRecipients_repl_RecipientRows_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_OpenRecipientRow_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenRecipientRow_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenRecipientRow_RecipientType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6009,8 +6028,9 @@ static int mapi_dissect_element_ReloadCachedInformation_repl_NormalizedSubject(t static int mapi_dissect_element_ReloadCachedInformation_repl_RecipientCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReloadCachedInformation_repl_RecipientColumns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReloadCachedInformation_repl_RowCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static const true_false_string MSGFLAG_READ_SUPPRESS_RECEIPT_tfs = { "SUPPRESS_RECEIPT is SET", "SUPPRESS_RECEIPT is NOT SET", @@ -6044,8 +6064,8 @@ static int mapi_dissect_element_SetMessageReadFlag_LogonId_LogonId(tvbuff_t *tvb static int mapi_dissect_element_SetMessageReadFlag_ClientData_ClientData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetMessageReadFlag_ClientData_ClientData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetMessageReadFlag_repl_ReadStatusChanged(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ReadStatusChanged); -static int mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ReadStatusChanged); -static int mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ReadStatusChanged); +static int mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ReadStatusChanged); +static int mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ReadStatusChanged); const value_string mapi_SetColumnsFlags_vals[] = { { SetColumns_TBL_SYNC, "SetColumns_TBL_SYNC" }, { SetColumns_TBL_ASYNC, "SetColumns_TBL_ASYNC" }, @@ -6065,8 +6085,9 @@ static int mapi_dissect_element_SetColumns_req_LogonId(tvbuff_t *tvb _U_, int of static int mapi_dissect_element_SetColumns_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetColumns_req_SetColumnsFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetColumns_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetColumns_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetColumns_repl_TableStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); const value_string mapi_TBL_FLAGS_vals[] = { { TBL_ASYNC, "TBL_ASYNC" }, @@ -6084,19 +6105,22 @@ static int mapi_dissect_element_SSortOrder_ulOrder(tvbuff_t *tvb _U_, int offset static int mapi_dissect_element_SSortOrderSet_cSorts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SSortOrderSet_cCategories(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SSortOrderSet_cExpanded(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SSortOrderSet_aSort_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SortTable_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SortTable_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SortTable_req_SortTableFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SortTable_req_lpSortCriteria(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SortTable_repl_TableStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SAndRestriction_cRes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SAndRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SOrRestriction_cRes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SOrRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SNotRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static const true_false_string fuzzyLevel_FL_SUBSTRING_tfs = { "FL_SUBSTRING is SET", @@ -6150,15 +6174,16 @@ static int mapi_dissect_element_SCompareProps_ulPropTag1(tvbuff_t *tvb _U_, int static int mapi_dissect_element_SCompareProps_ulPropTag2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SExistRestriction_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SSubRestriction_ulSubObject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SSubRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_RestrictionVariable_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RestrictionVariable_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SCommentRestriction_TaggedValuesCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SCommentRestriction_TaggedValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SCommentRestriction_TaggedValues_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SCommentRestriction_RestrictionPresent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RestrictionPresent); -static int mapi_dissect_element_SCommentRestriction_Restriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RestrictionPresent); +static int mapi_dissect_element_SCommentRestriction_Restriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RestrictionPresent); static int mapi_dissect_element_SRestriction_CTR_resAnd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SRestriction_CTR_resOr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SRestriction_CTR_resNot(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6171,15 +6196,15 @@ static int mapi_dissect_element_SRestriction_CTR_resExist(tvbuff_t *tvb _U_, int static int mapi_dissect_element_SRestriction_CTR_resSub(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SRestriction_CTR_resComment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SRestriction_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); -static int mapi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); +static int mapi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt); static int mapi_dissect_element_SRestriction_and_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); -static int mapi_dissect_element_SRestriction_and_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); +static int mapi_dissect_element_SRestriction_and_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt); static int mapi_dissect_element_SRestriction_or_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); -static int mapi_dissect_element_SRestriction_or_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); +static int mapi_dissect_element_SRestriction_or_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt); static int mapi_dissect_element_SRestriction_sub_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); -static int mapi_dissect_element_SRestriction_sub_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); +static int mapi_dissect_element_SRestriction_sub_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt); static int mapi_dissect_element_SRestriction_comment_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); -static int mapi_dissect_element_SRestriction_comment_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt); +static int mapi_dissect_element_SRestriction_comment_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt); static int mapi_dissect_element_Restrict_req_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Restrict_req_restrictions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Restrict_repl_TableStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6256,15 +6281,15 @@ static int mapi_dissect_element_CreateFolder_req_OutputHandleIndex(tvbuff_t *tvb static int mapi_dissect_element_CreateFolder_req_ulFolderType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateFolder_req_ulType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulType); static int mapi_dissect_element_CreateFolder_req_ulFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_CreateFolder_req_FolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulType); -static int mapi_dissect_element_CreateFolder_req_FolderComment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulType); +static int mapi_dissect_element_CreateFolder_req_FolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulType); +static int mapi_dissect_element_CreateFolder_req_FolderComment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulType); static int mapi_dissect_element_CreateFolder_GhostInfo_HasRules(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateFolder_GhostInfo_IsGhosted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); -static int mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); +static int mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted); static int mapi_dissect_element_CreateFolder_GhostUnion_GhostInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateFolder_repl_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CreateFolder_repl_IsExistingFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsExistingFolder); -static int mapi_dissect_element_CreateFolder_repl_GhostUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsExistingFolder); +static int mapi_dissect_element_CreateFolder_repl_GhostUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsExistingFolder); static const true_false_string DeleteFolderFlags_DEL_MESSAGES_tfs = { "DEL_MESSAGES is SET", "DEL_MESSAGES is NOT SET", @@ -6287,8 +6312,9 @@ static int mapi_dissect_element_DeleteMessages_req_InputHandleIndex(tvbuff_t *tv static int mapi_dissect_element_DeleteMessages_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeleteMessages_req_NotifyNonRead(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeleteMessages_req_cn_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteMessages_req_message_ids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeleteMessages_repl_PartialCompletion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetMessageStatus_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetMessageStatus_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6382,7 +6408,7 @@ static int mapi_dissect_element_RegisterNotification_req_InputHandleIndex(tvbuff static int mapi_dissect_element_RegisterNotification_req_OutputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RegisterNotification_req_notificationFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RegisterNotification_req_layout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *layout); -static int mapi_dissect_element_RegisterNotification_req_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *layout); +static int mapi_dissect_element_RegisterNotification_req_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t layout); static const true_false_string MsgFlags_MSGFLAG_READ_tfs = { "MSGFLAG_READ is SET", "MSGFLAG_READ is NOT SET", @@ -6440,18 +6466,20 @@ static int mapi_dissect_element_NewMailNotification_FID(tvbuff_t *tvb _U_, int o static int mapi_dissect_element_NewMailNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_NewMailNotification_MessageFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_NewMailNotification_UnicodeFlag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UnicodeFlag); -static int mapi_dissect_element_NewMailNotification_MessageClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UnicodeFlag); +static int mapi_dissect_element_NewMailNotification_MessageClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UnicodeFlag); static int mapi_dissect_element_FolderCreatedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderCreatedNotification_ParentFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderCreatedNotification_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FolderCreatedNotification_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FolderDeletedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderDeletedNotification_ParentFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderModifiedNotification_10_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderModifiedNotification_10_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FolderModifiedNotification_10_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FolderMoveCopyNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderMoveCopyNotification_ParentFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderMoveCopyNotification_OldFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6468,11 +6496,12 @@ static int mapi_dissect_element_HierarchyTableChangeUnion_HierarchyRowAddedNotif static int mapi_dissect_element_HierarchyTableChangeUnion_HierarchyRowDeletedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HierarchyTableChangeUnion_HierarchyRowModifiedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HierarchyTableChange_TableEvent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent); -static int mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent); +static int mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t TableEvent); static int mapi_dissect_element_IcsNotification_HierChanged(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_IcsNotification_GIDCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_IcsNotification_GID_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FolderModifiedNotification_1010_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderModifiedNotification_1010_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FolderModifiedNotification_1010_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6492,15 +6521,17 @@ static int mapi_dissect_element_FolderModifiedNotification_3010_UnreadMessageCou static int mapi_dissect_element_MessageCreatedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageCreatedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageCreatedNotification_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MessageCreatedNotification_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MessageDeletedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageDeletedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageModifiedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageModifiedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageModifiedNotification_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MessageModifiedNotification_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_MessageMoveCopyNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageMoveCopyNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MessageMoveCopyNotification_OldFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6526,21 +6557,23 @@ static int mapi_dissect_element_ContentsTableChangeUnion_ContentsRowAddedNotific static int mapi_dissect_element_ContentsTableChangeUnion_ContentsRowDeletedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ContentsTableChangeUnion_ContentsRowModifiedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ContentsTableChange_TableEvent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent); -static int mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent); +static int mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t TableEvent); static int mapi_dissect_element_SearchMessageCreatedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageCreatedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageCreatedNotification_SearchFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageCreatedNotification_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SearchMessageCreatedNotification_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SearchMessageRemovedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageRemovedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageRemovedNotification_SearchFID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageModifiedNotification_FID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageModifiedNotification_MID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SearchMessageModifiedNotification_TagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SearchMessageModifiedNotification_Tags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_NotificationData_NewMailNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_NotificationData_FolderCreatedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_NotificationData_FolderDeletedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6567,7 +6600,7 @@ static int mapi_dissect_element_NotificationData_SearchTableChange(tvbuff_t *tvb static int mapi_dissect_element_Notify_repl_NotificationHandle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Notify_repl_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Notify_repl_NotificationType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *NotificationType); -static int mapi_dissect_element_Notify_repl_NotificationData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *NotificationType); +static int mapi_dissect_element_Notify_repl_NotificationData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t NotificationType); const value_string mapi_OpenStream_OpenModeFlags_vals[] = { { OpenStream_ReadOnly, "OpenStream_ReadOnly" }, { OpenStream_ReadWrite, "OpenStream_ReadWrite" }, @@ -6585,7 +6618,7 @@ static int mapi_dissect_element_MaximumByteCount_value(tvbuff_t *tvb _U_, int of static int mapi_dissect_element_ReadStream_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadStream_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReadStream_req_ByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *ByteCount); -static int mapi_dissect_element_ReadStream_req_MaximumByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *ByteCount); +static int mapi_dissect_element_ReadStream_req_MaximumByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t ByteCount); static int mapi_dissect_element_ReadStream_repl_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_WriteStream_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_WriteStream_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6679,20 +6712,21 @@ static int mapi_dissect_element_MoveFolder_req_LogonId(tvbuff_t *tvb _U_, int of static int mapi_dissect_element_MoveFolder_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MoveFolder_req_UseUnicode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode); static int mapi_dissect_element_MoveFolder_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_MoveFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode); +static int mapi_dissect_element_MoveFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UseUnicode); static int mapi_dissect_element_MoveFolder_repl_PartialCompletion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyFolder_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyFolder_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyFolder_req_WantRecursive(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyFolder_req_UseUnicode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode); static int mapi_dissect_element_CopyFolder_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_CopyFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode); +static int mapi_dissect_element_CopyFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UseUnicode); static int mapi_dissect_element_CopyFolder_repl_PartialCompletion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryColumnsAll_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryColumnsAll_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryColumnsAll_repl_PropertyTagCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_QueryColumnsAll_repl_PropertyTags_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_Abort_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Abort_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_Abort_repl_TableStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6710,8 +6744,9 @@ static int mapi_dissect_element_CopyTo_req_WantSubObjects(tvbuff_t *tvb _U_, int static int mapi_dissect_element_CopyTo_req_CopyFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyTo_req_ExcludedTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyTo_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_CopyTo_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_CopyToStream_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyToStream_req_ByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyToStream_repl_ReadByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6747,8 +6782,9 @@ static int mapi_dissect_element_PermissionData_PermissionDataFlags(tvbuff_t *tvb static int mapi_dissect_element_PermissionData_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PermissionsData_ModifyFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PermissionsData_ModifyCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_PermissionsData_PermissionsData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ModifyPermissions_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyPermissions_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyPermissions_req_rowList(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6762,15 +6798,17 @@ static int mapi_dissect_element_ModifyRules_req_LogonId(tvbuff_t *tvb _U_, int o static int mapi_dissect_element_ModifyRules_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyRules_req_ModifyRulesFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ModifyRules_req_RulesCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_ModifyRules_req_RulesData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetOwningServers_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetOwningServers_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetOwningServers_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetOwningServers_repl_OwningServersCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetOwningServers_repl_CheapServersCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetOwningServers_repl_OwningServers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_LongTermIdFromId_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_LongTermIdFromId_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_LongTermIdFromId_req_Id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6782,7 +6820,7 @@ static int mapi_dissect_element_LongTermIdFromId_repl_Success_LongTermId(tvbuff_ static int mapi_dissect_element_LongTermIdFromId_repl_status_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_LongTermIdFromId_repl_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_LongTermIdFromId_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); -static int mapi_dissect_element_LongTermIdFromId_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue); +static int mapi_dissect_element_LongTermIdFromId_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue); static int mapi_dissect_element_IdFromLongTermId_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_IdFromLongTermId_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_IdFromLongTermId_req_LongTermId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6791,7 +6829,7 @@ static int mapi_dissect_element_PublicFolderIsGhosted_req_LogonId(tvbuff_t *tvb static int mapi_dissect_element_PublicFolderIsGhosted_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PublicFolderIsGhosted_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_PublicFolderIsGhosted_repl_IsGhosted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); -static int mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); +static int mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted); const value_string mapi_OpenEmbeddedMessage_OpenModeFlags_vals[] = { { MAPI_READONLY, "MAPI_READONLY" }, { MAPI_READWRITE, "MAPI_READWRITE" }, @@ -6813,8 +6851,9 @@ static int mapi_dissect_element_OpenEmbeddedMessage_repl_ColumnCount(tvbuff_t *t static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientColumns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientColumns_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenEmbeddedMessage_repl_RowCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetSpooler_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetSpooler_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); const value_string mapi_LockState_vals[] = { @@ -6831,13 +6870,14 @@ static int mapi_dissect_element_AddressTypes_req_LogonId(tvbuff_t *tvb _U_, int static int mapi_dissect_element_AddressTypes_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_AddressTypes_repl_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_AddressTypes_repl_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_AddressTypes_repl_transport_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_TransportSend_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_TransportSend_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_TransportSend_lpProps_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_TransportSend_repl_NoPropertiesReturned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *NoPropertiesReturned); -static int mapi_dissect_element_TransportSend_repl_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *NoPropertiesReturned); +static int mapi_dissect_element_TransportSend_repl_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t NoPropertiesReturned); static int mapi_dissect_element_FastTransferSourceGetBuffer_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FastTransferSourceGetBuffer_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FastTransferSourceGetBuffer_req_BufferSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6881,8 +6921,9 @@ static int mapi_dissect_element_TransportNewMail_req_MessageFlags(tvbuff_t *tvb static int mapi_dissect_element_GetValidAttachments_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetValidAttachments_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetValidAttachments_repl_AttachmentIdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); const value_string mapi_ulKind_vals[] = { { MNID_ID, "MNID_ID" }, { MNID_STRING, "MNID_STRING" }, @@ -6894,24 +6935,28 @@ static int mapi_dissect_element_Kind_lid(tvbuff_t *tvb _U_, int offset _U_, pack static int mapi_dissect_element_Kind_lpwstr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_MAPINAMEID_ulKind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulKind); static int mapi_dissect_element_MAPINAMEID_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_MAPINAMEID_kind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulKind); +static int mapi_dissect_element_MAPINAMEID_kind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulKind); static int mapi_dissect_element_GetNamesFromIDs_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetNamesFromIDs_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetNamesFromIDs_req_PropertyIdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetNamesFromIDs_req_PropertyIds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetNamesFromIDs_repl_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetNamesFromIDs_repl_nameid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetIDsFromNames_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetIDsFromNames_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetIDsFromNames_req_ulFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetIDsFromNames_req_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetIDsFromNames_req_nameid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetIDsFromNames_repl_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetIDsFromNames_repl_propID_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_UpdateDeferredActionMessages_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_UpdateDeferredActionMessages_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_UpdateDeferredActionMessages_req_ServerEntryId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6960,18 +7005,20 @@ static int mapi_dissect_element_QueryNamedProperties_req_LogonId(tvbuff_t *tvb _ static int mapi_dissect_element_QueryNamedProperties_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryNamedProperties_req_QueryFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryNamedProperties_req_HasGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasGuid); -static int mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasGuid); +static int mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t HasGuid); static int mapi_dissect_element_QueryNamedProperties_repl_IdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryNamedProperties_repl_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_QueryNamedProperties_repl_PropertyIds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_QueryNamedProperties_repl_PropertyNames_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetPerUserLongTermIds_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPerUserLongTermIds_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPerUserLongTermIds_req_DatabaseGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetPerUserGuid_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPerUserGuid_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetPerUserGuid_req_LongTermId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -6990,16 +7037,18 @@ static int mapi_dissect_element_SetReadFlags_req_InputHandleIndex(tvbuff_t *tvb static int mapi_dissect_element_SetReadFlags_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetReadFlags_req_ReadFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetReadFlags_req_MessageIdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetReadFlags_req_MessageIds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetReadFlags_repl_PartialCompletion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyProperties_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyProperties_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyProperties_req_CopyFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyProperties_req_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_CopyProperties_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_CopyProperties_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_FILETIME_dwLowDateTime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FILETIME_dwHighDateTime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ReceiveFolder_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -7009,8 +7058,9 @@ static int mapi_dissect_element_ReceiveFolder_modiftime(tvbuff_t *tvb _U_, int o static int mapi_dissect_element_GetReceiveFolderTable_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetReceiveFolderTable_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetReceiveFolderTable_repl_cValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetReceiveFolderTable_repl_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_GetCollapseState_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetCollapseState_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_GetCollapseState_req_RowId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -7034,7 +7084,7 @@ static int mapi_dissect_element_OptionsData_repl_OptionsInfo(tvbuff_t *tvb _U_, static int mapi_dissect_element_OptionsData_repl_HelpFileSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *HelpFileSize); static int mapi_dissect_element_OptionsData_repl_HelpFile(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OptionsData_repl_HelpFile_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_OptionsData_repl_HelpFileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *HelpFileSize); +static int mapi_dissect_element_OptionsData_repl_HelpFileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t HelpFileSize); const value_string mapi_SynchronizationType_vals[] = { { Contents, "Contents" }, { Hierarchy, "Hierarchy" }, @@ -7178,14 +7228,16 @@ static int mapi_dissect_element_SetPropertiesNoReplicate_req_LogonId(tvbuff_t *t static int mapi_dissect_element_SetPropertiesNoReplicate_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetPropertiesNoReplicate_req_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeletePropertiesNoReplicate_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeletePropertiesNoReplicate_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeletePropertiesNoReplicate_req_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static const true_false_string StoreState_STORE_HAS_SEARCHES_tfs = { "STORE_HAS_SEARCHES is SET", "STORE_HAS_SEARCHES is NOT SET", @@ -7215,7 +7267,7 @@ static int mapi_dissect_element_OpenPublicFolderByName_req_handle_idx(tvbuff_t * static int mapi_dissect_element_OpenPublicFolderByName_req_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenPublicFolderByName_repl_HasRules(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_OpenPublicFolderByName_repl_IsGhosted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); -static int mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted); +static int mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted); static int mapi_dissect_element_SetSyncNotificationGuid_req_NotificationGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FreeBookmark_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_FreeBookmark_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -7229,8 +7281,9 @@ static int mapi_dissect_element_HardDeleteMessages_req_InputHandleIndex(tvbuff_t static int mapi_dissect_element_HardDeleteMessages_req_WantAsynchronous(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HardDeleteMessages_req_NotifyNonRead(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HardDeleteMessages_req_MessageIdCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_HardDeleteMessages_req_MessageIds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int mapi_dissect_conformant_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int mapi_dissect_element_HardDeleteMessages_repl_PartialCompletion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HardDeleteMessagesAndSubfolders_req_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_HardDeleteMessagesAndSubfolders_req_InputHandleIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -7566,8 +7619,8 @@ static int mapi_dissect_element_RopReply_HardDeleteMessages(tvbuff_t *tvb _U_, i static int mapi_dissect_element_RopReply_HardDeleteMessagesAndSubfolders(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RopReply_Logon(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RopReply_RopBufferTooSmall(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int mapi_dissect_element_EcDoRpcMapiRequest_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *opnum); -static int mapi_dissect_element_EcDoRpcMapiResponse_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *opnum); +static int mapi_dissect_element_EcDoRpcMapiRequest_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t opnum); +static int mapi_dissect_element_EcDoRpcMapiResponse_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t opnum); static int mapi_dissect_element_request_rpcRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_response_rpcResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); const value_string mapi_AUX_HEADER_TYPE_1_vals[] = { @@ -7842,14 +7895,14 @@ static const true_false_string RpcExt2Flags_Chain_tfs = { "Chain is NOT SET", }; static int mapi_dissect_element_RopInput_RopId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId); -static int mapi_dissect_element_RopInput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId); +static int mapi_dissect_element_RopInput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RopId); static int mapi_dissect_element_ROPInputBuffer_ropSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPInputBuffer_rop(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPInputBuffer_rop_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPInputBuffer_objectHandles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPInputBuffer_objectHandles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_RopOutput_RopId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId); -static int mapi_dissect_element_RopOutput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId); +static int mapi_dissect_element_RopOutput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RopId); static int mapi_dissect_element_ROPOutputBuffer_ropSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPOutputBuffer_rop(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int mapi_dissect_element_ROPOutputBuffer_rop_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -8354,7 +8407,7 @@ mapi_dissect_struct_EcDoRpcMapiRequest(tvbuff_t *tvb, int offset, packet_info *p } offset = PIDL_dissect_uint8_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiRequest_opnum, param, &opnum); col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str_const(opnum, mapi_ROP_OPNUM_vals, "Unknown MAPI operation")); - offset = mapi_dissect_element_EcDoRpcMapiRequest_u(tvb, offset, pinfo, tree, di, drep, &opnum); + offset = mapi_dissect_element_EcDoRpcMapiRequest_u(tvb, offset, pinfo, tree, di, drep, opnum); proto_item_set_len(item, offset-old_offset); di->no_align = oldalign; return offset; @@ -8428,7 +8481,7 @@ mapi_dissect_struct_EcDoRpcMapiResponse(tvbuff_t *tvb, int offset, packet_info * } offset = PIDL_dissect_uint8_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiResponse_opnum, param, &opnum); col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str_const(opnum, mapi_ROP_OPNUM_vals, "Unknown MAPI operation")); - offset = mapi_dissect_element_EcDoRpcMapiResponse_u(tvb, offset, pinfo, tree, di, drep, &opnum); + offset = mapi_dissect_element_EcDoRpcMapiResponse_u(tvb, offset, pinfo, tree, di, drep, opnum); proto_item_set_len(item, offset-old_offset); di->no_align = oldalign; return offset; @@ -12592,9 +12645,10 @@ mapi_dissect_element_SBinary_short_cb(tvbuff_t *tvb _U_, int offset _U_, packet_ } static int -mapi_dissect_element_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SBinary_short_lpb_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SBinary_short_lpb_); return offset; } @@ -12607,14 +12661,25 @@ mapi_dissect_element_SBinary_short_lpb_(tvbuff_t *tvb _U_, int offset _U_, packe return offset; } +static int +mapi_dissect_conformant_SBinary_short_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SBinary_short(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_lpb = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SBinary_short_lpb(tvb, offset, pinfo, parent_tree, di, drep, &nga_lpb); + di->no_align = true; old_offset = offset; @@ -12626,7 +12691,7 @@ mapi_dissect_struct_SBinary_short(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SBinary_short_cb(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SBinary_short_lpb(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SBinary_short_lpb(tvb, offset, pinfo, tree, di, drep, &nga_lpb); proto_item_set_len(item, offset-old_offset); @@ -12652,9 +12717,10 @@ mapi_dissect_element_MV_LONG_STRUCT_cValues(tvbuff_t *tvb _U_, int offset _U_, p } static int -mapi_dissect_element_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_MV_LONG_STRUCT_lpl_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_MV_LONG_STRUCT_lpl_); return offset; } @@ -12667,13 +12733,24 @@ mapi_dissect_element_MV_LONG_STRUCT_lpl_(tvbuff_t *tvb _U_, int offset _U_, pack return offset; } +static int +mapi_dissect_conformant_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_MV_LONG_STRUCT(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_lpl = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = mapi_dissect_conformant_MV_LONG_STRUCT_lpl(tvb, offset, pinfo, parent_tree, di, drep, &nga_lpl); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -12685,16 +12762,12 @@ mapi_dissect_struct_MV_LONG_STRUCT(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_MV_LONG_STRUCT_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_MV_LONG_STRUCT_lpl(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_MV_LONG_STRUCT_lpl(tvb, offset, pinfo, tree, di, drep, &nga_lpl); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -12755,9 +12828,10 @@ mapi_dissect_element_SLPSTRArray_cValues(tvbuff_t *tvb _U_, int offset _U_, pack } static int -mapi_dissect_element_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SLPSTRArray_strings_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SLPSTRArray_strings_); return offset; } @@ -12770,13 +12844,24 @@ mapi_dissect_element_SLPSTRArray_strings_(tvbuff_t *tvb _U_, int offset _U_, pac return offset; } +static int +mapi_dissect_conformant_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SLPSTRArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_strings = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = mapi_dissect_conformant_SLPSTRArray_strings(tvb, offset, pinfo, parent_tree, di, drep, &nga_strings); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -12788,16 +12873,12 @@ mapi_dissect_struct_SLPSTRArray(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset = mapi_dissect_element_SLPSTRArray_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SLPSTRArray_strings(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SLPSTRArray_strings(tvb, offset, pinfo, tree, di, drep, &nga_strings); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -12858,9 +12939,10 @@ mapi_dissect_element_SPLSTRArrayW_cValues(tvbuff_t *tvb _U_, int offset _U_, pac } static int -mapi_dissect_element_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SPLSTRArrayW_strings_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SPLSTRArrayW_strings_); return offset; } @@ -12873,13 +12955,24 @@ mapi_dissect_element_SPLSTRArrayW_strings_(tvbuff_t *tvb _U_, int offset _U_, pa return offset; } +static int +mapi_dissect_conformant_SPLSTRArrayW_strings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SPLSTRArrayW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_strings = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = mapi_dissect_conformant_SPLSTRArrayW_strings(tvb, offset, pinfo, parent_tree, di, drep, &nga_strings); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -12891,16 +12984,12 @@ mapi_dissect_struct_SPLSTRArrayW(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SPLSTRArrayW_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SPLSTRArrayW_strings(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SPLSTRArrayW_strings(tvb, offset, pinfo, tree, di, drep, &nga_strings); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -12919,9 +13008,10 @@ mapi_dissect_element_SBinaryArray_cValues(tvbuff_t *tvb _U_, int offset _U_, pac } static int -mapi_dissect_element_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SBinaryArray_bin_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SBinaryArray_bin_); return offset; } @@ -12934,13 +13024,24 @@ mapi_dissect_element_SBinaryArray_bin_(tvbuff_t *tvb _U_, int offset _U_, packet return offset; } +static int +mapi_dissect_conformant_SBinaryArray_bin(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SBinaryArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_bin = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = mapi_dissect_conformant_SBinaryArray_bin(tvb, offset, pinfo, parent_tree, di, drep, &nga_bin); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -12952,16 +13053,12 @@ mapi_dissect_struct_SBinaryArray(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SBinaryArray_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SBinaryArray_bin(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SBinaryArray_bin(tvb, offset, pinfo, tree, di, drep, &nga_bin); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -12980,9 +13077,10 @@ mapi_dissect_element_SGuidArray_cValues(tvbuff_t *tvb _U_, int offset _U_, packe } static int -mapi_dissect_element_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SGuidArray_lpguid_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SGuidArray_lpguid_); return offset; } @@ -12995,13 +13093,24 @@ mapi_dissect_element_SGuidArray_lpguid_(tvbuff_t *tvb _U_, int offset _U_, packe return offset; } +static int +mapi_dissect_conformant_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SGuidArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_lpguid = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = mapi_dissect_conformant_SGuidArray_lpguid(tvb, offset, pinfo, parent_tree, di, drep, &nga_lpguid); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -13013,16 +13122,12 @@ mapi_dissect_struct_SGuidArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *p offset = mapi_dissect_element_SGuidArray_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SGuidArray_lpguid(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SGuidArray_lpguid(tvb, offset, pinfo, tree, di, drep, &nga_lpguid); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -13422,9 +13527,10 @@ mapi_dissect_element_ForwardDelegate_Action_RecipientCount(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ForwardDelegate_Action_RecipientBlock_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_ForwardDelegate_Action_RecipientBlock_); return offset; } @@ -13437,14 +13543,25 @@ mapi_dissect_element_ForwardDelegate_Action_RecipientBlock_(tvbuff_t *tvb _U_, i return offset; } +static int +mapi_dissect_conformant_ForwardDelegate_Action_RecipientBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_ForwardDelegate_Action(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RecipientBlock = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_ForwardDelegate_Action_RecipientBlock(tvb, offset, pinfo, parent_tree, di, drep, &nga_RecipientBlock); + di->no_align = true; old_offset = offset; @@ -13456,7 +13573,7 @@ mapi_dissect_struct_ForwardDelegate_Action(tvbuff_t *tvb _U_, int offset _U_, pa offset = mapi_dissect_element_ForwardDelegate_Action_RecipientCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_ForwardDelegate_Action_RecipientBlock(tvb, offset, pinfo, tree, di, drep, &nga_RecipientBlock); proto_item_set_len(item, offset-old_offset); @@ -13567,6 +13684,8 @@ mapi_dissect_ActionData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_ActionData, &item, "ActionData"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case ActionType_OP_MOVE: offset = mapi_dissect_element_ActionData_MoveAction(tvb, offset, pinfo, tree, di, drep); @@ -13648,9 +13767,9 @@ mapi_dissect_element_ActionBlockData_ActionFlags(tvbuff_t *tvb _U_, int offset _ } static int -mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ActionType) +mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ActionType) { - offset = mapi_dissect_ActionData(tvb, offset, pinfo, tree, di, drep, hf_mapi_ActionBlockData_ActionDataBuffer, *ActionType); + offset = mapi_dissect_ActionData(tvb, offset, pinfo, tree, di, drep, hf_mapi_ActionBlockData_ActionDataBuffer, ActionType); return offset; } @@ -13679,7 +13798,7 @@ mapi_dissect_struct_ActionBlockData(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_ActionBlockData_ActionFlags(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvb, offset, pinfo, tree, di, drep, &ActionType); + offset = mapi_dissect_element_ActionBlockData_ActionDataBuffer(tvb, offset, pinfo, tree, di, drep, ActionType); proto_item_set_len(item, offset-old_offset); @@ -13746,9 +13865,10 @@ mapi_dissect_element_RuleAction_count(tvbuff_t *tvb _U_, int offset _U_, packet_ } static int -mapi_dissect_element_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_RuleAction_ActionBlock_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_RuleAction_ActionBlock_); return offset; } @@ -13761,14 +13881,25 @@ mapi_dissect_element_RuleAction_ActionBlock_(tvbuff_t *tvb _U_, int offset _U_, return offset; } +static int +mapi_dissect_conformant_RuleAction_ActionBlock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_RuleAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_ActionBlock = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_RuleAction_ActionBlock(tvb, offset, pinfo, parent_tree, di, drep, &nga_ActionBlock); + di->no_align = true; old_offset = offset; @@ -13780,7 +13911,7 @@ mapi_dissect_struct_RuleAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *p offset = mapi_dissect_element_RuleAction_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_RuleAction_ActionBlock(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_RuleAction_ActionBlock(tvb, offset, pinfo, tree, di, drep, &nga_ActionBlock); proto_item_set_len(item, offset-old_offset); @@ -13816,7 +13947,11 @@ mapi_dissect_element_ShortArray_r_lpi(tvbuff_t *tvb _U_, int offset _U_, packet_ static int mapi_dissect_element_ShortArray_r_lpi_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ShortArray_r_lpi__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_ShortArray_r_lpi__); return offset; } @@ -13885,7 +14020,11 @@ mapi_dissect_element_LongArray_r_lpl(tvbuff_t *tvb _U_, int offset _U_, packet_i static int mapi_dissect_element_LongArray_r_lpl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_LongArray_r_lpl__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_LongArray_r_lpl__); return offset; } @@ -13954,7 +14093,11 @@ mapi_dissect_element_BinaryArray_r_lpbin(tvbuff_t *tvb _U_, int offset _U_, pack static int mapi_dissect_element_BinaryArray_r_lpbin_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_BinaryArray_r_lpbin__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_BinaryArray_r_lpbin__); return offset; } @@ -14023,7 +14166,11 @@ mapi_dissect_element_DateTimeArray_r_lpft(tvbuff_t *tvb _U_, int offset _U_, pac static int mapi_dissect_element_DateTimeArray_r_lpft_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_DateTimeArray_r_lpft__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_DateTimeArray_r_lpft__); return offset; } @@ -14092,7 +14239,11 @@ mapi_dissect_element_Binary_r_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info static int mapi_dissect_element_Binary_r_lpb_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_Binary_r_lpb__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_Binary_r_lpb__); return offset; } @@ -14214,9 +14365,13 @@ mapi_dissect_element_SPropValue_CTR_lpszA(tvbuff_t *tvb _U_, int offset _U_, pac static int mapi_dissect_element_SPropValue_CTR_lpszA_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_SPropValue_CTR_lpszA, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_SPropValue_CTR_lpszA, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14249,9 +14404,13 @@ mapi_dissect_element_SPropValue_CTR_lpszW(tvbuff_t *tvb _U_, int offset _U_, pac static int mapi_dissect_element_SPropValue_CTR_lpszW_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_mapi_mapi_SPropValue_CTR_lpszW, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_mapi_mapi_SPropValue_CTR_lpszW, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14390,8 +14549,9 @@ mapi_dissect_SPropValue_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_mapi_SPropValue_CTR, &item, "mapi_SPropValue_CTR"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case 0x2: @@ -14558,9 +14718,10 @@ mapi_dissect_element_SPropValue_array_cValues(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SPropValue_array_lpProps_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SPropValue_array_lpProps_); return offset; } @@ -14573,14 +14734,25 @@ mapi_dissect_element_SPropValue_array_lpProps_(tvbuff_t *tvb _U_, int offset _U_ return offset; } +static int +mapi_dissect_conformant_SPropValue_array_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SPropValue_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_lpProps = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SPropValue_array_lpProps(tvb, offset, pinfo, parent_tree, di, drep, &nga_lpProps); + di->no_align = true; old_offset = offset; @@ -14592,7 +14764,7 @@ mapi_dissect_struct_SPropValue_array(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_SPropValue_array_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SPropValue_array_lpProps(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SPropValue_array_lpProps(tvb, offset, pinfo, tree, di, drep, &nga_lpProps); proto_item_set_len(item, offset-old_offset); @@ -14618,9 +14790,10 @@ mapi_dissect_element_SPropTagArray_cValues(tvbuff_t *tvb _U_, int offset _U_, pa } static int -mapi_dissect_element_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SPropTagArray_aulPropTag_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SPropTagArray_aulPropTag_); return offset; } @@ -14633,14 +14806,25 @@ mapi_dissect_element_SPropTagArray_aulPropTag_(tvbuff_t *tvb _U_, int offset _U_ return offset; } +static int +mapi_dissect_conformant_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SPropTagArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_aulPropTag = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SPropTagArray_aulPropTag(tvb, offset, pinfo, parent_tree, di, drep, &nga_aulPropTag); + di->no_align = true; old_offset = offset; @@ -14652,7 +14836,7 @@ mapi_dissect_struct_SPropTagArray(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SPropTagArray_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SPropTagArray_aulPropTag(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SPropTagArray_aulPropTag(tvb, offset, pinfo, tree, di, drep, &nga_aulPropTag); proto_item_set_len(item, offset-old_offset); @@ -14893,9 +15077,10 @@ mapi_dissect_element_OpenFolder_Replicas_CheapServerCount(tvbuff_t *tvb _U_, int } static int -mapi_dissect_element_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OpenFolder_Replicas_Servers_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_OpenFolder_Replicas_Servers_); return offset; } @@ -14908,14 +15093,25 @@ mapi_dissect_element_OpenFolder_Replicas_Servers_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_OpenFolder_Replicas_Servers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_OpenFolder_Replicas(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Servers = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_OpenFolder_Replicas_Servers(tvb, offset, pinfo, parent_tree, di, drep, &nga_Servers); + di->no_align = true; old_offset = offset; @@ -14929,7 +15125,7 @@ mapi_dissect_struct_OpenFolder_Replicas(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_OpenFolder_Replicas_CheapServerCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_OpenFolder_Replicas_Servers(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_OpenFolder_Replicas_Servers(tvb, offset, pinfo, tree, di, drep, &nga_Servers); proto_item_set_len(item, offset-old_offset); @@ -14967,6 +15163,8 @@ mapi_dissect_IsGhosted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_IsGhosted, &item, "IsGhosted"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -15004,9 +15202,9 @@ mapi_dissect_element_OpenFolder_Success_IsGhosted(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_OpenFolder_Success_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted) +mapi_dissect_element_OpenFolder_Success_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted) { - offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_Success_Ghost, *IsGhosted); + offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_Success_Ghost, IsGhosted); return offset; } @@ -15033,7 +15231,7 @@ mapi_dissect_struct_OpenFolder_Success(tvbuff_t *tvb _U_, int offset _U_, packet offset = mapi_dissect_element_OpenFolder_Success_IsGhosted(tvb, offset, pinfo, tree, di, drep, &IsGhosted); - offset = mapi_dissect_element_OpenFolder_Success_Ghost(tvb, offset, pinfo, tree, di, drep, &IsGhosted); + offset = mapi_dissect_element_OpenFolder_Success_Ghost(tvb, offset, pinfo, tree, di, drep, IsGhosted); proto_item_set_len(item, offset-old_offset); @@ -15071,6 +15269,8 @@ mapi_dissect_OpenFolder_repl_status(tvbuff_t *tvb _U_, int offset _U_, packet_in tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_OpenFolder_repl_status, &item, "OpenFolder_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_OpenFolder_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -15108,9 +15308,9 @@ mapi_dissect_element_OpenFolder_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _ } static int -mapi_dissect_element_OpenFolder_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_OpenFolder_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_OpenFolder_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_repl_repl, *ReturnValue); + offset = mapi_dissect_OpenFolder_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_repl_repl, ReturnValue); return offset; } @@ -15137,7 +15337,7 @@ mapi_dissect_struct_OpenFolder_repl(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_OpenFolder_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_OpenFolder_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_OpenFolder_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -15217,6 +15417,8 @@ mapi_dissect_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, p tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_String, &item, "String"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -15256,9 +15458,9 @@ mapi_dissect_element_TypedString_StringType(tvbuff_t *tvb _U_, int offset _U_, p } static int -mapi_dissect_element_TypedString_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *StringType) +mapi_dissect_element_TypedString_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t StringType) { - offset = mapi_dissect_String(tvb, offset, pinfo, tree, di, drep, hf_mapi_TypedString_String, *StringType); + offset = mapi_dissect_String(tvb, offset, pinfo, tree, di, drep, hf_mapi_TypedString_String, StringType); return offset; } @@ -15283,7 +15485,7 @@ mapi_dissect_struct_TypedString(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset = mapi_dissect_element_TypedString_StringType(tvb, offset, pinfo, tree, di, drep, &StringType); - offset = mapi_dissect_element_TypedString_String(tvb, offset, pinfo, tree, di, drep, &StringType); + offset = mapi_dissect_element_TypedString_String(tvb, offset, pinfo, tree, di, drep, StringType); proto_item_set_len(item, offset-old_offset); @@ -15616,6 +15818,8 @@ mapi_dissect_recipient_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_recipient_type, &item, "recipient_type"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x1: offset = mapi_dissect_element_recipient_type_EXCHANGE(tvb, offset, pinfo, tree, di, drep); @@ -15670,6 +15874,8 @@ mapi_dissect_recipient_SimpleDisplayName(tvbuff_t *tvb _U_, int offset _U_, pack tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_recipient_SimpleDisplayName, &item, "recipient_SimpleDisplayName"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -15729,6 +15935,8 @@ mapi_dissect_recipient_TransmittableDisplayName(tvbuff_t *tvb _U_, int offset _U tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_recipient_TransmittableDisplayName, &item, "recipient_TransmittableDisplayName"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -15792,6 +16000,8 @@ mapi_dissect_recipient_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_recipient_DisplayName, &item, "recipient_DisplayName"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -15849,6 +16059,8 @@ mapi_dissect_recipient_EmailAddress(tvbuff_t *tvb _U_, int offset _U_, packet_in tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_recipient_EmailAddress, &item, "recipient_EmailAddress"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -16141,9 +16353,10 @@ mapi_dissect_element_OpenMessage_Success_RowCount(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OpenMessage_Success_recipients_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_OpenMessage_Success_recipients_); return offset; } @@ -16156,14 +16369,25 @@ mapi_dissect_element_OpenMessage_Success_recipients_(tvbuff_t *tvb _U_, int offs return offset; } +static int +mapi_dissect_conformant_OpenMessage_Success_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_OpenMessage_Success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_recipients = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_OpenMessage_Success_recipients(tvb, offset, pinfo, parent_tree, di, drep, &nga_recipients); + di->no_align = true; old_offset = offset; @@ -16187,7 +16411,7 @@ mapi_dissect_struct_OpenMessage_Success(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_OpenMessage_Success_RowCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_OpenMessage_Success_recipients(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_OpenMessage_Success_recipients(tvb, offset, pinfo, tree, di, drep, &nga_recipients); proto_item_set_len(item, offset-old_offset); @@ -16225,6 +16449,8 @@ mapi_dissect_OpenMessage_repl_status(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_OpenMessage_repl_status, &item, "OpenMessage_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_OpenMessage_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -16262,9 +16488,9 @@ mapi_dissect_element_OpenMessage_repl_ReturnValue(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_OpenMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_OpenMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_OpenMessage_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMessage_repl_repl, *ReturnValue); + offset = mapi_dissect_OpenMessage_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMessage_repl_repl, ReturnValue); return offset; } @@ -16291,7 +16517,7 @@ mapi_dissect_struct_OpenMessage_repl(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_OpenMessage_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_OpenMessage_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_OpenMessage_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -16485,6 +16711,8 @@ mapi_dissect_GetHierarchyTable_repl_status(tvbuff_t *tvb _U_, int offset _U_, pa tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_GetHierarchyTable_repl_status, &item, "GetHierarchyTable_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_GetHierarchyTable_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -16522,9 +16750,9 @@ mapi_dissect_element_GetHierarchyTable_repl_ReturnValue(tvbuff_t *tvb _U_, int o } static int -mapi_dissect_element_GetHierarchyTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_GetHierarchyTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_GetHierarchyTable_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetHierarchyTable_repl_repl, *ReturnValue); + offset = mapi_dissect_GetHierarchyTable_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetHierarchyTable_repl_repl, ReturnValue); return offset; } @@ -16551,7 +16779,7 @@ mapi_dissect_struct_GetHierarchyTable_repl(tvbuff_t *tvb _U_, int offset _U_, pa offset = mapi_dissect_element_GetHierarchyTable_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_GetHierarchyTable_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_GetHierarchyTable_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -16704,6 +16932,8 @@ mapi_dissect_GetContentsTable_repl_status(tvbuff_t *tvb _U_, int offset _U_, pac tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_GetContentsTable_repl_status, &item, "GetContentsTable_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_GetContentsTable_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -16741,9 +16971,9 @@ mapi_dissect_element_GetContentsTable_repl_ReturnValue(tvbuff_t *tvb _U_, int of } static int -mapi_dissect_element_GetContentsTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_GetContentsTable_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_GetContentsTable_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetContentsTable_repl_repl, *ReturnValue); + offset = mapi_dissect_GetContentsTable_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetContentsTable_repl_repl, ReturnValue); return offset; } @@ -16770,7 +17000,7 @@ mapi_dissect_struct_GetContentsTable_repl(tvbuff_t *tvb _U_, int offset _U_, pac offset = mapi_dissect_element_GetContentsTable_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_GetContentsTable_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_GetContentsTable_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -16904,6 +17134,8 @@ mapi_dissect_CreateMessage_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_CreateMessage_MessageId, &item, "CreateMessage_MessageId"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0: break; @@ -16932,9 +17164,9 @@ mapi_dissect_element_CreateMessage_repl_success_HasMessageId(tvbuff_t *tvb _U_, } static int -mapi_dissect_element_CreateMessage_repl_success_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasMessageId) +mapi_dissect_element_CreateMessage_repl_success_MessageId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t HasMessageId) { - offset = mapi_dissect_CreateMessage_MessageId(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateMessage_repl_success_MessageId, *HasMessageId); + offset = mapi_dissect_CreateMessage_MessageId(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateMessage_repl_success_MessageId, HasMessageId); return offset; } @@ -16959,7 +17191,7 @@ mapi_dissect_struct_CreateMessage_repl_success(tvbuff_t *tvb _U_, int offset _U_ offset = mapi_dissect_element_CreateMessage_repl_success_HasMessageId(tvb, offset, pinfo, tree, di, drep, &HasMessageId); - offset = mapi_dissect_element_CreateMessage_repl_success_MessageId(tvb, offset, pinfo, tree, di, drep, &HasMessageId); + offset = mapi_dissect_element_CreateMessage_repl_success_MessageId(tvb, offset, pinfo, tree, di, drep, HasMessageId); proto_item_set_len(item, offset-old_offset); @@ -16997,6 +17229,8 @@ mapi_dissect_CreateMessage_repl_status(tvbuff_t *tvb _U_, int offset _U_, packet tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_CreateMessage_repl_status, &item, "CreateMessage_repl_status"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_CreateMessage_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -17034,9 +17268,9 @@ mapi_dissect_element_CreateMessage_repl_ReturnValue(tvbuff_t *tvb _U_, int offse } static int -mapi_dissect_element_CreateMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_CreateMessage_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_CreateMessage_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateMessage_repl_repl, *ReturnValue); + offset = mapi_dissect_CreateMessage_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateMessage_repl_repl, ReturnValue); return offset; } @@ -17063,7 +17297,7 @@ mapi_dissect_struct_CreateMessage_repl(tvbuff_t *tvb _U_, int offset _U_, packet offset = mapi_dissect_element_CreateMessage_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_CreateMessage_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_CreateMessage_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -17125,9 +17359,10 @@ mapi_dissect_element_GetProps_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetProps_req_properties_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetProps_req_properties_); return offset; } @@ -17140,14 +17375,25 @@ mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, return offset; } +static int +mapi_dissect_conformant_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_properties = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetProps_req_properties(tvb, offset, pinfo, parent_tree, di, drep, &nga_properties); + di->no_align = true; old_offset = offset; @@ -17167,7 +17413,7 @@ mapi_dissect_struct_GetProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_GetProps_req_prop_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetProps_req_properties(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetProps_req_properties(tvb, offset, pinfo, tree, di, drep, &nga_properties); proto_item_set_len(item, offset-old_offset); @@ -17257,6 +17503,8 @@ mapi_dissect_GetProps_repl_status(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_GetProps_repl_status, &item, "GetProps_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_GetProps_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -17294,9 +17542,9 @@ mapi_dissect_element_GetProps_repl_ReturnValue(tvbuff_t *tvb _U_, int offset _U_ } static int -mapi_dissect_element_GetProps_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_GetProps_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_GetProps_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_repl, *ReturnValue); + offset = mapi_dissect_GetProps_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_repl, ReturnValue); return offset; } @@ -17323,7 +17571,7 @@ mapi_dissect_struct_GetProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_GetProps_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_GetProps_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_GetProps_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -17476,6 +17724,8 @@ mapi_dissect_GetPropsAll_repl_status(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_GetPropsAll_repl_status, &item, "GetPropsAll_repl_status"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_GetPropsAll_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -17513,9 +17763,9 @@ mapi_dissect_element_GetPropsAll_repl_ReturnValue(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_GetPropsAll_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_GetPropsAll_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_GetPropsAll_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetPropsAll_repl_repl, *ReturnValue); + offset = mapi_dissect_GetPropsAll_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetPropsAll_repl_repl, ReturnValue); return offset; } @@ -17542,7 +17792,7 @@ mapi_dissect_struct_GetPropsAll_repl(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_GetPropsAll_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_GetPropsAll_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_GetPropsAll_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -17620,9 +17870,10 @@ mapi_dissect_element_GetPropList_repl_count(tvbuff_t *tvb _U_, int offset _U_, p } static int -mapi_dissect_element_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetPropList_repl_tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetPropList_repl_tags_); return offset; } @@ -17635,14 +17886,25 @@ mapi_dissect_element_GetPropList_repl_tags_(tvbuff_t *tvb _U_, int offset _U_, p return offset; } +static int +mapi_dissect_conformant_GetPropList_repl_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetPropList_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetPropList_repl_tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_tags); + di->no_align = true; old_offset = offset; @@ -17654,7 +17916,7 @@ mapi_dissect_struct_GetPropList_repl(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_GetPropList_repl_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetPropList_repl_tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetPropList_repl_tags(tvb, offset, pinfo, tree, di, drep, &nga_tags); proto_item_set_len(item, offset-old_offset); @@ -17806,9 +18068,10 @@ mapi_dissect_element_SetProps_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int o } static int -mapi_dissect_element_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SetProps_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SetProps_repl_PropertyProblem_); return offset; } @@ -17821,14 +18084,25 @@ mapi_dissect_element_SetProps_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offse return offset; } +static int +mapi_dissect_conformant_SetProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SetProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SetProps_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -17840,7 +18114,7 @@ mapi_dissect_struct_SetProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SetProps_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SetProps_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SetProps_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -17884,9 +18158,10 @@ mapi_dissect_element_DeleteProps_req_PropertyTagCount(tvbuff_t *tvb _U_, int off } static int -mapi_dissect_element_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_DeleteProps_req_tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_DeleteProps_req_tags_); return offset; } @@ -17899,14 +18174,25 @@ mapi_dissect_element_DeleteProps_req_tags_(tvbuff_t *tvb _U_, int offset _U_, pa return offset; } +static int +mapi_dissect_conformant_DeleteProps_req_tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_DeleteProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_DeleteProps_req_tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_tags); + di->no_align = true; old_offset = offset; @@ -17922,7 +18208,7 @@ mapi_dissect_struct_DeleteProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_DeleteProps_req_PropertyTagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_DeleteProps_req_tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_DeleteProps_req_tags(tvb, offset, pinfo, tree, di, drep, &nga_tags); proto_item_set_len(item, offset-old_offset); @@ -17948,9 +18234,10 @@ mapi_dissect_element_DeleteProps_repl_PropertyProblemCount(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_DeleteProps_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_DeleteProps_repl_PropertyProblem_); return offset; } @@ -17963,14 +18250,25 @@ mapi_dissect_element_DeleteProps_repl_PropertyProblem_(tvbuff_t *tvb _U_, int of return offset; } +static int +mapi_dissect_conformant_DeleteProps_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_DeleteProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_DeleteProps_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -17982,7 +18280,7 @@ mapi_dissect_struct_DeleteProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_DeleteProps_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_DeleteProps_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -18354,7 +18652,11 @@ mapi_dissect_element_ModifyRecipients_req_prop_count(tvbuff_t *tvb _U_, int offs static int mapi_dissect_element_ModifyRecipients_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ModifyRecipients_req_properties_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_ModifyRecipients_req_properties_); return offset; } @@ -18376,9 +18678,10 @@ mapi_dissect_element_ModifyRecipients_req_cValues(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ModifyRecipients_req_RecipientRow_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_ModifyRecipients_req_RecipientRow_); return offset; } @@ -18391,14 +18694,25 @@ mapi_dissect_element_ModifyRecipients_req_RecipientRow_(tvbuff_t *tvb _U_, int o return offset; } +static int +mapi_dissect_conformant_ModifyRecipients_req_RecipientRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_ModifyRecipients_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RecipientRow = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_ModifyRecipients_req_RecipientRow(tvb, offset, pinfo, parent_tree, di, drep, &nga_RecipientRow); + di->no_align = true; old_offset = offset; @@ -18418,7 +18732,7 @@ mapi_dissect_struct_ModifyRecipients_req(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_ModifyRecipients_req_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_ModifyRecipients_req_RecipientRow(tvb, offset, pinfo, tree, di, drep, &nga_RecipientRow); proto_item_set_len(item, offset-old_offset); @@ -18631,9 +18945,10 @@ mapi_dissect_element_ReadRecipients_repl_RowCount(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ReadRecipients_repl_RecipientRows_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_ReadRecipients_repl_RecipientRows_); return offset; } @@ -18646,14 +18961,25 @@ mapi_dissect_element_ReadRecipients_repl_RecipientRows_(tvbuff_t *tvb _U_, int o return offset; } +static int +mapi_dissect_conformant_ReadRecipients_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_ReadRecipients_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RecipientRows = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_ReadRecipients_repl_RecipientRows(tvb, offset, pinfo, parent_tree, di, drep, &nga_RecipientRows); + di->no_align = true; old_offset = offset; @@ -18665,7 +18991,7 @@ mapi_dissect_struct_ReadRecipients_repl(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_ReadRecipients_repl_RowCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_ReadRecipients_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep, &nga_RecipientRows); proto_item_set_len(item, offset-old_offset); @@ -18873,9 +19199,10 @@ mapi_dissect_element_ReloadCachedInformation_repl_RowCount(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows_); return offset; } @@ -18888,14 +19215,25 @@ mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows_(tvbuff_t *tvb _ return offset; } +static int +mapi_dissect_conformant_ReloadCachedInformation_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_ReloadCachedInformation_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RecipientRows = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_ReloadCachedInformation_repl_RecipientRows(tvb, offset, pinfo, parent_tree, di, drep, &nga_RecipientRows); + di->no_align = true; old_offset = offset; @@ -18917,7 +19255,7 @@ mapi_dissect_struct_ReloadCachedInformation_repl(tvbuff_t *tvb _U_, int offset _ offset = mapi_dissect_element_ReloadCachedInformation_repl_RowCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_ReloadCachedInformation_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep, &nga_RecipientRows); proto_item_set_len(item, offset-old_offset); @@ -19160,17 +19498,17 @@ mapi_dissect_element_SetMessageReadFlag_repl_ReadStatusChanged(tvbuff_t *tvb _U_ } static int -mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ReadStatusChanged) +mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ReadStatusChanged) { - offset = mapi_dissect_SetMessageReadFlag_LogonId(tvb, offset, pinfo, tree, di, drep, hf_mapi_SetMessageReadFlag_repl_LogonId, *ReadStatusChanged); + offset = mapi_dissect_SetMessageReadFlag_LogonId(tvb, offset, pinfo, tree, di, drep, hf_mapi_SetMessageReadFlag_repl_LogonId, ReadStatusChanged); return offset; } static int -mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ReadStatusChanged) +mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ReadStatusChanged) { - offset = mapi_dissect_SetMessageReadFlag_ClientData(tvb, offset, pinfo, tree, di, drep, hf_mapi_SetMessageReadFlag_repl_ClientData, *ReadStatusChanged); + offset = mapi_dissect_SetMessageReadFlag_ClientData(tvb, offset, pinfo, tree, di, drep, hf_mapi_SetMessageReadFlag_repl_ClientData, ReadStatusChanged); return offset; } @@ -19195,9 +19533,9 @@ mapi_dissect_struct_SetMessageReadFlag_repl(tvbuff_t *tvb _U_, int offset _U_, p offset = mapi_dissect_element_SetMessageReadFlag_repl_ReadStatusChanged(tvb, offset, pinfo, tree, di, drep, &ReadStatusChanged); - offset = mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvb, offset, pinfo, tree, di, drep, &ReadStatusChanged); + offset = mapi_dissect_element_SetMessageReadFlag_repl_LogonId(tvb, offset, pinfo, tree, di, drep, ReadStatusChanged); - offset = mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvb, offset, pinfo, tree, di, drep, &ReadStatusChanged); + offset = mapi_dissect_element_SetMessageReadFlag_repl_ClientData(tvb, offset, pinfo, tree, di, drep, ReadStatusChanged); proto_item_set_len(item, offset-old_offset); @@ -19295,9 +19633,10 @@ mapi_dissect_element_SetColumns_req_prop_count(tvbuff_t *tvb _U_, int offset _U_ } static int -mapi_dissect_element_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SetColumns_req_properties_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SetColumns_req_properties_); return offset; } @@ -19310,14 +19649,25 @@ mapi_dissect_element_SetColumns_req_properties_(tvbuff_t *tvb _U_, int offset _U return offset; } +static int +mapi_dissect_conformant_SetColumns_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SetColumns_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_properties = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SetColumns_req_properties(tvb, offset, pinfo, parent_tree, di, drep, &nga_properties); + di->no_align = true; old_offset = offset; @@ -19335,7 +19685,7 @@ mapi_dissect_struct_SetColumns_req(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_SetColumns_req_prop_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SetColumns_req_properties(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SetColumns_req_properties(tvb, offset, pinfo, tree, di, drep, &nga_properties); proto_item_set_len(item, offset-old_offset); @@ -19513,9 +19863,10 @@ mapi_dissect_element_SSortOrderSet_cExpanded(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SSortOrderSet_aSort_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SSortOrderSet_aSort_); return offset; } @@ -19528,14 +19879,25 @@ mapi_dissect_element_SSortOrderSet_aSort_(tvbuff_t *tvb _U_, int offset _U_, pac return offset; } +static int +mapi_dissect_conformant_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SSortOrderSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_aSort = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SSortOrderSet_aSort(tvb, offset, pinfo, parent_tree, di, drep, &nga_aSort); + di->no_align = true; old_offset = offset; @@ -19551,7 +19913,7 @@ mapi_dissect_struct_SSortOrderSet(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SSortOrderSet_cExpanded(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SSortOrderSet_aSort(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SSortOrderSet_aSort(tvb, offset, pinfo, tree, di, drep, &nga_aSort); proto_item_set_len(item, offset-old_offset); @@ -19692,9 +20054,10 @@ mapi_dissect_element_SAndRestriction_cRes(tvbuff_t *tvb _U_, int offset _U_, pac } static int -mapi_dissect_element_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SAndRestriction_res_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SAndRestriction_res_); return offset; } @@ -19707,14 +20070,25 @@ mapi_dissect_element_SAndRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, pac return offset; } +static int +mapi_dissect_conformant_SAndRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SAndRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_res = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SAndRestriction_res(tvb, offset, pinfo, parent_tree, di, drep, &nga_res); + di->no_align = true; old_offset = offset; @@ -19726,7 +20100,7 @@ mapi_dissect_struct_SAndRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_SAndRestriction_cRes(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SAndRestriction_res(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SAndRestriction_res(tvb, offset, pinfo, tree, di, drep, &nga_res); proto_item_set_len(item, offset-old_offset); @@ -19752,9 +20126,10 @@ mapi_dissect_element_SOrRestriction_cRes(tvbuff_t *tvb _U_, int offset _U_, pack } static int -mapi_dissect_element_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SOrRestriction_res_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SOrRestriction_res_); return offset; } @@ -19767,14 +20142,25 @@ mapi_dissect_element_SOrRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, pack return offset; } +static int +mapi_dissect_conformant_SOrRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SOrRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_res = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SOrRestriction_res(tvb, offset, pinfo, parent_tree, di, drep, &nga_res); + di->no_align = true; old_offset = offset; @@ -19786,7 +20172,7 @@ mapi_dissect_struct_SOrRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_SOrRestriction_cRes(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SOrRestriction_res(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SOrRestriction_res(tvb, offset, pinfo, tree, di, drep, &nga_res); proto_item_set_len(item, offset-old_offset); @@ -20295,9 +20681,10 @@ mapi_dissect_element_SSubRestriction_ulSubObject(tvbuff_t *tvb _U_, int offset _ } static int -mapi_dissect_element_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SSubRestriction_res_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SSubRestriction_res_); return offset; } @@ -20310,14 +20697,25 @@ mapi_dissect_element_SSubRestriction_res_(tvbuff_t *tvb _U_, int offset _U_, pac return offset; } +static int +mapi_dissect_conformant_SSubRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SSubRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_res = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SSubRestriction_res(tvb, offset, pinfo, parent_tree, di, drep, &nga_res); + di->no_align = true; old_offset = offset; @@ -20329,7 +20727,7 @@ mapi_dissect_struct_SSubRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_SSubRestriction_ulSubObject(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SSubRestriction_res(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SSubRestriction_res(tvb, offset, pinfo, tree, di, drep, &nga_res); proto_item_set_len(item, offset-old_offset); @@ -20375,6 +20773,8 @@ mapi_dissect_RestrictionVariable(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_RestrictionVariable, &item, "RestrictionVariable"); } + UNION_ALIGN_TO_5_BYTES; + switch(level) { case 0x0: break; @@ -20407,7 +20807,11 @@ mapi_dissect_element_SCommentRestriction_TaggedValuesCount(tvbuff_t *tvb _U_, in static int mapi_dissect_element_SCommentRestriction_TaggedValues(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SCommentRestriction_TaggedValues_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_SCommentRestriction_TaggedValues_); return offset; } @@ -20429,9 +20833,9 @@ mapi_dissect_element_SCommentRestriction_RestrictionPresent(tvbuff_t *tvb _U_, i } static int -mapi_dissect_element_SCommentRestriction_Restriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RestrictionPresent) +mapi_dissect_element_SCommentRestriction_Restriction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RestrictionPresent) { - offset = mapi_dissect_RestrictionVariable(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_SCommentRestriction_Restriction, *RestrictionPresent); + offset = mapi_dissect_RestrictionVariable(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_SCommentRestriction_Restriction, RestrictionPresent); return offset; } @@ -20460,7 +20864,7 @@ mapi_dissect_struct_SCommentRestriction(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_SCommentRestriction_RestrictionPresent(tvb, offset, pinfo, tree, di, drep, &RestrictionPresent); - offset = mapi_dissect_element_SCommentRestriction_Restriction(tvb, offset, pinfo, tree, di, drep, &RestrictionPresent); + offset = mapi_dissect_element_SCommentRestriction_Restriction(tvb, offset, pinfo, tree, di, drep, RestrictionPresent); proto_item_set_len(item, offset-old_offset); @@ -20588,6 +20992,8 @@ mapi_dissect_SRestriction_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_mapi_SRestriction_CTR, &item, "mapi_SRestriction_CTR"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case RES_AND: offset = mapi_dissect_element_SRestriction_CTR_resAnd(tvb, offset, pinfo, tree, di, drep); @@ -20656,9 +21062,9 @@ mapi_dissect_element_SRestriction_rt(tvbuff_t *tvb _U_, int offset _U_, packet_i } static int -mapi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt) +mapi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt) { - offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_SRestriction_res, *rt); + offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_SRestriction_res, rt); return offset; } @@ -20683,7 +21089,7 @@ mapi_dissect_struct_SRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = mapi_dissect_element_SRestriction_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = mapi_dissect_element_SRestriction_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = mapi_dissect_element_SRestriction_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -20709,9 +21115,9 @@ mapi_dissect_element_SRestriction_and_rt(tvbuff_t *tvb _U_, int offset _U_, pack } static int -mapi_dissect_element_SRestriction_and_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt) +mapi_dissect_element_SRestriction_and_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt) { - offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_and_res, *rt); + offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_and_res, rt); return offset; } @@ -20736,7 +21142,7 @@ mapi_dissect_struct_SRestriction_and(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_SRestriction_and_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = mapi_dissect_element_SRestriction_and_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = mapi_dissect_element_SRestriction_and_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -20762,9 +21168,9 @@ mapi_dissect_element_SRestriction_or_rt(tvbuff_t *tvb _U_, int offset _U_, packe } static int -mapi_dissect_element_SRestriction_or_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt) +mapi_dissect_element_SRestriction_or_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt) { - offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_or_res, *rt); + offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_or_res, rt); return offset; } @@ -20789,7 +21195,7 @@ mapi_dissect_struct_SRestriction_or(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_SRestriction_or_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = mapi_dissect_element_SRestriction_or_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = mapi_dissect_element_SRestriction_or_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -20815,9 +21221,9 @@ mapi_dissect_element_SRestriction_sub_rt(tvbuff_t *tvb _U_, int offset _U_, pack } static int -mapi_dissect_element_SRestriction_sub_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt) +mapi_dissect_element_SRestriction_sub_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt) { - offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_sub_res, *rt); + offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_sub_res, rt); return offset; } @@ -20842,7 +21248,7 @@ mapi_dissect_struct_SRestriction_sub(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_SRestriction_sub_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = mapi_dissect_element_SRestriction_sub_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = mapi_dissect_element_SRestriction_sub_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -20868,9 +21274,9 @@ mapi_dissect_element_SRestriction_comment_rt(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_SRestriction_comment_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *rt) +mapi_dissect_element_SRestriction_comment_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t rt) { - offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_comment_res, *rt); + offset = mapi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_SRestriction_comment_res, rt); return offset; } @@ -20895,7 +21301,7 @@ mapi_dissect_struct_SRestriction_comment(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_SRestriction_comment_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = mapi_dissect_element_SRestriction_comment_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = mapi_dissect_element_SRestriction_comment_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -21942,6 +22348,8 @@ mapi_dissect_LPTSTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, p tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_LPTSTR, &item, "LPTSTR"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case MAPI_FOLDER_ANSI: offset = mapi_dissect_element_LPTSTR_lpszA(tvb, offset, pinfo, tree, di, drep); @@ -22037,17 +22445,17 @@ mapi_dissect_element_CreateFolder_req_ulFlags(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_CreateFolder_req_FolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulType) +mapi_dissect_element_CreateFolder_req_FolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulType) { - offset = mapi_dissect_LPTSTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_req_FolderName, *ulType); + offset = mapi_dissect_LPTSTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_req_FolderName, ulType); return offset; } static int -mapi_dissect_element_CreateFolder_req_FolderComment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulType) +mapi_dissect_element_CreateFolder_req_FolderComment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulType) { - offset = mapi_dissect_LPTSTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_req_FolderComment, *ulType); + offset = mapi_dissect_LPTSTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_req_FolderComment, ulType); return offset; } @@ -22082,9 +22490,9 @@ mapi_dissect_struct_CreateFolder_req(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_CreateFolder_req_ulFlags(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_CreateFolder_req_FolderName(tvb, offset, pinfo, tree, di, drep, &ulType); + offset = mapi_dissect_element_CreateFolder_req_FolderName(tvb, offset, pinfo, tree, di, drep, ulType); - offset = mapi_dissect_element_CreateFolder_req_FolderComment(tvb, offset, pinfo, tree, di, drep, &ulType); + offset = mapi_dissect_element_CreateFolder_req_FolderComment(tvb, offset, pinfo, tree, di, drep, ulType); proto_item_set_len(item, offset-old_offset); @@ -22119,9 +22527,9 @@ mapi_dissect_element_CreateFolder_GhostInfo_IsGhosted(tvbuff_t *tvb _U_, int off } static int -mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted) +mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted) { - offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_GhostInfo_Ghost, *IsGhosted); + offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_GhostInfo_Ghost, IsGhosted); return offset; } @@ -22148,7 +22556,7 @@ mapi_dissect_struct_CreateFolder_GhostInfo(tvbuff_t *tvb _U_, int offset _U_, pa offset = mapi_dissect_element_CreateFolder_GhostInfo_IsGhosted(tvb, offset, pinfo, tree, di, drep, &IsGhosted); - offset = mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvb, offset, pinfo, tree, di, drep, &IsGhosted); + offset = mapi_dissect_element_CreateFolder_GhostInfo_Ghost(tvb, offset, pinfo, tree, di, drep, IsGhosted); proto_item_set_len(item, offset-old_offset); @@ -22186,6 +22594,8 @@ mapi_dissect_CreateFolder_GhostUnion(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_CreateFolder_GhostUnion, &item, "CreateFolder_GhostUnion"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -22223,9 +22633,9 @@ mapi_dissect_element_CreateFolder_repl_IsExistingFolder(tvbuff_t *tvb _U_, int o } static int -mapi_dissect_element_CreateFolder_repl_GhostUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsExistingFolder) +mapi_dissect_element_CreateFolder_repl_GhostUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsExistingFolder) { - offset = mapi_dissect_CreateFolder_GhostUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_repl_GhostUnion, *IsExistingFolder); + offset = mapi_dissect_CreateFolder_GhostUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_CreateFolder_repl_GhostUnion, IsExistingFolder); return offset; } @@ -22252,7 +22662,7 @@ mapi_dissect_struct_CreateFolder_repl(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = mapi_dissect_element_CreateFolder_repl_IsExistingFolder(tvb, offset, pinfo, tree, di, drep, &IsExistingFolder); - offset = mapi_dissect_element_CreateFolder_repl_GhostUnion(tvb, offset, pinfo, tree, di, drep, &IsExistingFolder); + offset = mapi_dissect_element_CreateFolder_repl_GhostUnion(tvb, offset, pinfo, tree, di, drep, IsExistingFolder); proto_item_set_len(item, offset-old_offset); @@ -22464,9 +22874,10 @@ mapi_dissect_element_DeleteMessages_req_cn_ids(tvbuff_t *tvb _U_, int offset _U_ } static int -mapi_dissect_element_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_DeleteMessages_req_message_ids_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_DeleteMessages_req_message_ids_); return offset; } @@ -22479,14 +22890,25 @@ mapi_dissect_element_DeleteMessages_req_message_ids_(tvbuff_t *tvb _U_, int offs return offset; } +static int +mapi_dissect_conformant_DeleteMessages_req_message_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_DeleteMessages_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_message_ids = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_DeleteMessages_req_message_ids(tvb, offset, pinfo, parent_tree, di, drep, &nga_message_ids); + di->no_align = true; old_offset = offset; @@ -22506,7 +22928,7 @@ mapi_dissect_struct_DeleteMessages_req(tvbuff_t *tvb _U_, int offset _U_, packet offset = mapi_dissect_element_DeleteMessages_req_cn_ids(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_DeleteMessages_req_message_ids(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_DeleteMessages_req_message_ids(tvb, offset, pinfo, tree, di, drep, &nga_message_ids); proto_item_set_len(item, offset-old_offset); @@ -23599,6 +24021,8 @@ mapi_dissect_hyperbool(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_hyperbool, &item, "hyperbool"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_hyperbool_ID(tvb, offset, pinfo, tree, di, drep); @@ -23663,9 +24087,9 @@ mapi_dissect_element_RegisterNotification_req_layout(tvbuff_t *tvb _U_, int offs } static int -mapi_dissect_element_RegisterNotification_req_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *layout) +mapi_dissect_element_RegisterNotification_req_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t layout) { - offset = mapi_dissect_hyperbool(tvb, offset, pinfo, tree, di, drep, hf_mapi_RegisterNotification_req_u, *layout); + offset = mapi_dissect_hyperbool(tvb, offset, pinfo, tree, di, drep, hf_mapi_RegisterNotification_req_u, layout); return offset; } @@ -23698,7 +24122,7 @@ mapi_dissect_struct_RegisterNotification_req(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_RegisterNotification_req_layout(tvb, offset, pinfo, tree, di, drep, &layout); - offset = mapi_dissect_element_RegisterNotification_req_u(tvb, offset, pinfo, tree, di, drep, &layout); + offset = mapi_dissect_element_RegisterNotification_req_u(tvb, offset, pinfo, tree, di, drep, layout); proto_item_set_len(item, offset-old_offset); @@ -23822,6 +24246,8 @@ mapi_dissect_MessageClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_MessageClass, &item, "MessageClass"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_MessageClass_lpszA(tvb, offset, pinfo, tree, di, drep); @@ -23963,9 +24389,9 @@ mapi_dissect_element_NewMailNotification_UnicodeFlag(tvbuff_t *tvb _U_, int offs } static int -mapi_dissect_element_NewMailNotification_MessageClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UnicodeFlag) +mapi_dissect_element_NewMailNotification_MessageClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UnicodeFlag) { - offset = mapi_dissect_MessageClass(tvb, offset, pinfo, tree, di, drep, hf_mapi_NewMailNotification_MessageClass, *UnicodeFlag); + offset = mapi_dissect_MessageClass(tvb, offset, pinfo, tree, di, drep, hf_mapi_NewMailNotification_MessageClass, UnicodeFlag); return offset; } @@ -23996,7 +24422,7 @@ mapi_dissect_struct_NewMailNotification(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_NewMailNotification_UnicodeFlag(tvb, offset, pinfo, tree, di, drep, &UnicodeFlag); - offset = mapi_dissect_element_NewMailNotification_MessageClass(tvb, offset, pinfo, tree, di, drep, &UnicodeFlag); + offset = mapi_dissect_element_NewMailNotification_MessageClass(tvb, offset, pinfo, tree, di, drep, UnicodeFlag); proto_item_set_len(item, offset-old_offset); @@ -24040,9 +24466,10 @@ mapi_dissect_element_FolderCreatedNotification_TagCount(tvbuff_t *tvb _U_, int o } static int -mapi_dissect_element_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_FolderCreatedNotification_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_FolderCreatedNotification_Tags_); return offset; } @@ -24055,14 +24482,25 @@ mapi_dissect_element_FolderCreatedNotification_Tags_(tvbuff_t *tvb _U_, int offs return offset; } +static int +mapi_dissect_conformant_FolderCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_FolderCreatedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_FolderCreatedNotification_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -24078,7 +24516,7 @@ mapi_dissect_struct_FolderCreatedNotification(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_FolderCreatedNotification_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_FolderCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_FolderCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -24165,9 +24603,10 @@ mapi_dissect_element_FolderModifiedNotification_10_TagCount(tvbuff_t *tvb _U_, i } static int -mapi_dissect_element_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_FolderModifiedNotification_10_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_FolderModifiedNotification_10_Tags_); return offset; } @@ -24180,14 +24619,25 @@ mapi_dissect_element_FolderModifiedNotification_10_Tags_(tvbuff_t *tvb _U_, int return offset; } +static int +mapi_dissect_conformant_FolderModifiedNotification_10_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_FolderModifiedNotification_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_FolderModifiedNotification_10_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -24201,7 +24651,7 @@ mapi_dissect_struct_FolderModifiedNotification_10(tvbuff_t *tvb _U_, int offset offset = mapi_dissect_element_FolderModifiedNotification_10_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_FolderModifiedNotification_10_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_FolderModifiedNotification_10_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -24539,6 +24989,8 @@ mapi_dissect_HierarchyTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_HierarchyTableChangeUnion, &item, "HierarchyTableChangeUnion"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case TABLE_ROW_ADDED: offset = mapi_dissect_element_HierarchyTableChangeUnion_HierarchyRowAddedNotification(tvb, offset, pinfo, tree, di, drep); @@ -24575,9 +25027,9 @@ mapi_dissect_element_HierarchyTableChange_TableEvent(tvbuff_t *tvb _U_, int offs } static int -mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent) +mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t TableEvent) { - offset = mapi_dissect_HierarchyTableChangeUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_HierarchyTableChange_HierarchyTableChangeUnion, *TableEvent); + offset = mapi_dissect_HierarchyTableChangeUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_HierarchyTableChange_HierarchyTableChangeUnion, TableEvent); return offset; } @@ -24602,7 +25054,7 @@ mapi_dissect_struct_HierarchyTableChange(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_HierarchyTableChange_TableEvent(tvb, offset, pinfo, tree, di, drep, &TableEvent); - offset = mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvb, offset, pinfo, tree, di, drep, &TableEvent); + offset = mapi_dissect_element_HierarchyTableChange_HierarchyTableChangeUnion(tvb, offset, pinfo, tree, di, drep, TableEvent); proto_item_set_len(item, offset-old_offset); @@ -24637,9 +25089,10 @@ mapi_dissect_element_IcsNotification_GIDCount(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_IcsNotification_GID_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_IcsNotification_GID_); return offset; } @@ -24652,14 +25105,25 @@ mapi_dissect_element_IcsNotification_GID_(tvbuff_t *tvb _U_, int offset _U_, pac return offset; } +static int +mapi_dissect_conformant_IcsNotification_GID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_IcsNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_GID = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_IcsNotification_GID(tvb, offset, pinfo, parent_tree, di, drep, &nga_GID); + di->no_align = true; old_offset = offset; @@ -24673,7 +25137,7 @@ mapi_dissect_struct_IcsNotification(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_IcsNotification_GIDCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_IcsNotification_GID(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_IcsNotification_GID(tvb, offset, pinfo, tree, di, drep, &nga_GID); proto_item_set_len(item, offset-old_offset); @@ -24711,7 +25175,11 @@ mapi_dissect_element_FolderModifiedNotification_1010_TagCount(tvbuff_t *tvb _U_, static int mapi_dissect_element_FolderModifiedNotification_1010_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_FolderModifiedNotification_1010_Tags_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_FolderModifiedNotification_1010_Tags_); return offset; } @@ -24793,7 +25261,11 @@ mapi_dissect_element_FolderModifiedNotification_2010_TagCount(tvbuff_t *tvb _U_, static int mapi_dissect_element_FolderModifiedNotification_2010_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_FolderModifiedNotification_2010_Tags_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_FolderModifiedNotification_2010_Tags_); return offset; } @@ -24876,7 +25348,11 @@ mapi_dissect_element_FolderModifiedNotification_3010_TagCount(tvbuff_t *tvb _U_, static int mapi_dissect_element_FolderModifiedNotification_3010_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_FolderModifiedNotification_3010_Tags_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_FolderModifiedNotification_3010_Tags_); return offset; } @@ -24974,9 +25450,10 @@ mapi_dissect_element_MessageCreatedNotification_TagCount(tvbuff_t *tvb _U_, int } static int -mapi_dissect_element_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_MessageCreatedNotification_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_MessageCreatedNotification_Tags_); return offset; } @@ -24989,14 +25466,25 @@ mapi_dissect_element_MessageCreatedNotification_Tags_(tvbuff_t *tvb _U_, int off return offset; } +static int +mapi_dissect_conformant_MessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_MessageCreatedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_MessageCreatedNotification_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -25012,7 +25500,7 @@ mapi_dissect_struct_MessageCreatedNotification(tvbuff_t *tvb _U_, int offset _U_ offset = mapi_dissect_element_MessageCreatedNotification_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_MessageCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_MessageCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -25108,9 +25596,10 @@ mapi_dissect_element_MessageModifiedNotification_TagCount(tvbuff_t *tvb _U_, int } static int -mapi_dissect_element_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_MessageModifiedNotification_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_MessageModifiedNotification_Tags_); return offset; } @@ -25123,14 +25612,25 @@ mapi_dissect_element_MessageModifiedNotification_Tags_(tvbuff_t *tvb _U_, int of return offset; } +static int +mapi_dissect_conformant_MessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_MessageModifiedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_MessageModifiedNotification_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -25146,7 +25646,7 @@ mapi_dissect_struct_MessageModifiedNotification(tvbuff_t *tvb _U_, int offset _U offset = mapi_dissect_element_MessageModifiedNotification_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_MessageModifiedNotification_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_MessageModifiedNotification_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -25553,6 +26053,8 @@ mapi_dissect_ContentsTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_ContentsTableChangeUnion, &item, "ContentsTableChangeUnion"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case TABLE_ROW_ADDED: offset = mapi_dissect_element_ContentsTableChangeUnion_ContentsRowAddedNotification(tvb, offset, pinfo, tree, di, drep); @@ -25589,9 +26091,9 @@ mapi_dissect_element_ContentsTableChange_TableEvent(tvbuff_t *tvb _U_, int offse } static int -mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *TableEvent) +mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t TableEvent) { - offset = mapi_dissect_ContentsTableChangeUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_ContentsTableChange_ContentsTableChangeUnion, *TableEvent); + offset = mapi_dissect_ContentsTableChangeUnion(tvb, offset, pinfo, tree, di, drep, hf_mapi_ContentsTableChange_ContentsTableChangeUnion, TableEvent); return offset; } @@ -25616,7 +26118,7 @@ mapi_dissect_struct_ContentsTableChange(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_ContentsTableChange_TableEvent(tvb, offset, pinfo, tree, di, drep, &TableEvent); - offset = mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvb, offset, pinfo, tree, di, drep, &TableEvent); + offset = mapi_dissect_element_ContentsTableChange_ContentsTableChangeUnion(tvb, offset, pinfo, tree, di, drep, TableEvent); proto_item_set_len(item, offset-old_offset); @@ -25669,9 +26171,10 @@ mapi_dissect_element_SearchMessageCreatedNotification_TagCount(tvbuff_t *tvb _U_ } static int -mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SearchMessageCreatedNotification_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SearchMessageCreatedNotification_Tags_); return offset; } @@ -25684,14 +26187,25 @@ mapi_dissect_element_SearchMessageCreatedNotification_Tags_(tvbuff_t *tvb _U_, i return offset; } +static int +mapi_dissect_conformant_SearchMessageCreatedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SearchMessageCreatedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SearchMessageCreatedNotification_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -25709,7 +26223,7 @@ mapi_dissect_struct_SearchMessageCreatedNotification(tvbuff_t *tvb _U_, int offs offset = mapi_dissect_element_SearchMessageCreatedNotification_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SearchMessageCreatedNotification_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -25816,9 +26330,10 @@ mapi_dissect_element_SearchMessageModifiedNotification_TagCount(tvbuff_t *tvb _U } static int -mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SearchMessageModifiedNotification_Tags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SearchMessageModifiedNotification_Tags_); return offset; } @@ -25831,14 +26346,25 @@ mapi_dissect_element_SearchMessageModifiedNotification_Tags_(tvbuff_t *tvb _U_, return offset; } +static int +mapi_dissect_conformant_SearchMessageModifiedNotification_Tags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SearchMessageModifiedNotification(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Tags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SearchMessageModifiedNotification_Tags(tvb, offset, pinfo, parent_tree, di, drep, &nga_Tags); + di->no_align = true; old_offset = offset; @@ -25854,7 +26380,7 @@ mapi_dissect_struct_SearchMessageModifiedNotification(tvbuff_t *tvb _U_, int off offset = mapi_dissect_element_SearchMessageModifiedNotification_TagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SearchMessageModifiedNotification_Tags(tvb, offset, pinfo, tree, di, drep, &nga_Tags); proto_item_set_len(item, offset-old_offset); @@ -26089,6 +26615,8 @@ mapi_dissect_NotificationData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_NotificationData, &item, "NotificationData"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0002: offset = mapi_dissect_element_NotificationData_NewMailNotification(tvb, offset, pinfo, tree, di, drep); @@ -26220,9 +26748,9 @@ mapi_dissect_element_Notify_repl_NotificationType(tvbuff_t *tvb _U_, int offset } static int -mapi_dissect_element_Notify_repl_NotificationData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *NotificationType) +mapi_dissect_element_Notify_repl_NotificationData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t NotificationType) { - offset = mapi_dissect_NotificationData(tvb, offset, pinfo, tree, di, drep, hf_mapi_Notify_repl_NotificationData, *NotificationType); + offset = mapi_dissect_NotificationData(tvb, offset, pinfo, tree, di, drep, hf_mapi_Notify_repl_NotificationData, NotificationType); return offset; } @@ -26251,7 +26779,7 @@ mapi_dissect_struct_Notify_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset = mapi_dissect_element_Notify_repl_NotificationType(tvb, offset, pinfo, tree, di, drep, &NotificationType); - offset = mapi_dissect_element_Notify_repl_NotificationData(tvb, offset, pinfo, tree, di, drep, &NotificationType); + offset = mapi_dissect_element_Notify_repl_NotificationData(tvb, offset, pinfo, tree, di, drep, NotificationType); proto_item_set_len(item, offset-old_offset); @@ -26437,6 +26965,8 @@ mapi_dissect_MaximumByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_MaximumByteCount, &item, "MaximumByteCount"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0xBABE: offset = mapi_dissect_element_MaximumByteCount_value(tvb, offset, pinfo, tree, di, drep); @@ -26483,9 +27013,9 @@ mapi_dissect_element_ReadStream_req_ByteCount(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_ReadStream_req_MaximumByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *ByteCount) +mapi_dissect_element_ReadStream_req_MaximumByteCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t ByteCount) { - offset = mapi_dissect_MaximumByteCount(tvb, offset, pinfo, tree, di, drep, hf_mapi_ReadStream_req_MaximumByteCount, *ByteCount); + offset = mapi_dissect_MaximumByteCount(tvb, offset, pinfo, tree, di, drep, hf_mapi_ReadStream_req_MaximumByteCount, ByteCount); return offset; } @@ -26514,7 +27044,7 @@ mapi_dissect_struct_ReadStream_req(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_ReadStream_req_ByteCount(tvb, offset, pinfo, tree, di, drep, &ByteCount); - offset = mapi_dissect_element_ReadStream_req_MaximumByteCount(tvb, offset, pinfo, tree, di, drep, &ByteCount); + offset = mapi_dissect_element_ReadStream_req_MaximumByteCount(tvb, offset, pinfo, tree, di, drep, ByteCount); proto_item_set_len(item, offset-old_offset); @@ -26970,7 +27500,11 @@ mapi_dissect_element_SetSearchCriteria_req_FolderIdCount(tvbuff_t *tvb _U_, int static int mapi_dissect_element_SetSearchCriteria_req_FolderIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SetSearchCriteria_req_FolderIds_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_SetSearchCriteria_req_FolderIds_); return offset; } @@ -27178,7 +27712,11 @@ mapi_dissect_element_GetSearchCriteria_repl_FolderIdCount(tvbuff_t *tvb _U_, int static int mapi_dissect_element_GetSearchCriteria_repl_FolderIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetSearchCriteria_repl_FolderIds_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_GetSearchCriteria_repl_FolderIds_); return offset; } @@ -27375,7 +27913,11 @@ mapi_dissect_element_MoveCopyMessages_req_count(tvbuff_t *tvb _U_, int offset _U static int mapi_dissect_element_MoveCopyMessages_req_message_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_MoveCopyMessages_req_message_id_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_MoveCopyMessages_req_message_id_); return offset; } @@ -27618,6 +28160,8 @@ mapi_dissect_Folder_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_Folder_name, &item, "Folder_name"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_Folder_name_lpszA(tvb, offset, pinfo, tree, di, drep); @@ -27674,9 +28218,9 @@ mapi_dissect_element_MoveFolder_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_MoveFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode) +mapi_dissect_element_MoveFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UseUnicode) { - offset = mapi_dissect_Folder_name(tvb, offset, pinfo, tree, di, drep, hf_mapi_MoveFolder_req_NewFolderName, *UseUnicode); + offset = mapi_dissect_Folder_name(tvb, offset, pinfo, tree, di, drep, hf_mapi_MoveFolder_req_NewFolderName, UseUnicode); return offset; } @@ -27707,7 +28251,7 @@ mapi_dissect_struct_MoveFolder_req(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_MoveFolder_req_FolderId(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_MoveFolder_req_NewFolderName(tvb, offset, pinfo, tree, di, drep, &UseUnicode); + offset = mapi_dissect_element_MoveFolder_req_NewFolderName(tvb, offset, pinfo, tree, di, drep, UseUnicode); proto_item_set_len(item, offset-old_offset); @@ -27810,9 +28354,9 @@ mapi_dissect_element_CopyFolder_req_FolderId(tvbuff_t *tvb _U_, int offset _U_, } static int -mapi_dissect_element_CopyFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *UseUnicode) +mapi_dissect_element_CopyFolder_req_NewFolderName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t UseUnicode) { - offset = mapi_dissect_Folder_name(tvb, offset, pinfo, tree, di, drep, hf_mapi_CopyFolder_req_NewFolderName, *UseUnicode); + offset = mapi_dissect_Folder_name(tvb, offset, pinfo, tree, di, drep, hf_mapi_CopyFolder_req_NewFolderName, UseUnicode); return offset; } @@ -27845,7 +28389,7 @@ mapi_dissect_struct_CopyFolder_req(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset = mapi_dissect_element_CopyFolder_req_FolderId(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_CopyFolder_req_NewFolderName(tvb, offset, pinfo, tree, di, drep, &UseUnicode); + offset = mapi_dissect_element_CopyFolder_req_NewFolderName(tvb, offset, pinfo, tree, di, drep, UseUnicode); proto_item_set_len(item, offset-old_offset); @@ -27964,9 +28508,10 @@ mapi_dissect_element_QueryColumnsAll_repl_PropertyTagCount(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_QueryColumnsAll_repl_PropertyTags_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_QueryColumnsAll_repl_PropertyTags_); return offset; } @@ -27979,14 +28524,25 @@ mapi_dissect_element_QueryColumnsAll_repl_PropertyTags_(tvbuff_t *tvb _U_, int o return offset; } +static int +mapi_dissect_conformant_QueryColumnsAll_repl_PropertyTags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_QueryColumnsAll_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyTags = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_QueryColumnsAll_repl_PropertyTags(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyTags); + di->no_align = true; old_offset = offset; @@ -27998,7 +28554,7 @@ mapi_dissect_struct_QueryColumnsAll_repl(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_QueryColumnsAll_repl_PropertyTagCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_QueryColumnsAll_repl_PropertyTags(tvb, offset, pinfo, tree, di, drep, &nga_PropertyTags); proto_item_set_len(item, offset-old_offset); @@ -28235,9 +28791,10 @@ mapi_dissect_element_CopyTo_repl_PropertyProblemCount(tvbuff_t *tvb _U_, int off } static int -mapi_dissect_element_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_CopyTo_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_CopyTo_repl_PropertyProblem_); return offset; } @@ -28250,14 +28807,25 @@ mapi_dissect_element_CopyTo_repl_PropertyProblem_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_CopyTo_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_CopyTo_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_CopyTo_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -28269,7 +28837,7 @@ mapi_dissect_struct_CopyTo_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset = mapi_dissect_element_CopyTo_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_CopyTo_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_CopyTo_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -28850,9 +29418,10 @@ mapi_dissect_element_PermissionsData_ModifyCount(tvbuff_t *tvb _U_, int offset _ } static int -mapi_dissect_element_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_PermissionsData_PermissionsData_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_PermissionsData_PermissionsData_); return offset; } @@ -28865,14 +29434,25 @@ mapi_dissect_element_PermissionsData_PermissionsData_(tvbuff_t *tvb _U_, int off return offset; } +static int +mapi_dissect_conformant_PermissionsData_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PermissionsData = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_PermissionsData_PermissionsData(tvb, offset, pinfo, parent_tree, di, drep, &nga_PermissionsData); + di->no_align = true; old_offset = offset; @@ -28886,7 +29466,7 @@ mapi_dissect_struct_PermissionsData(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_PermissionsData_ModifyCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_PermissionsData_PermissionsData(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_PermissionsData_PermissionsData(tvb, offset, pinfo, tree, di, drep, &nga_PermissionsData); proto_item_set_len(item, offset-old_offset); @@ -29113,9 +29693,10 @@ mapi_dissect_element_ModifyRules_req_RulesCount(tvbuff_t *tvb _U_, int offset _U } static int -mapi_dissect_element_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_ModifyRules_req_RulesData_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_ModifyRules_req_RulesData_); return offset; } @@ -29128,14 +29709,25 @@ mapi_dissect_element_ModifyRules_req_RulesData_(tvbuff_t *tvb _U_, int offset _U return offset; } +static int +mapi_dissect_conformant_ModifyRules_req_RulesData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_ModifyRules_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RulesData = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_ModifyRules_req_RulesData(tvb, offset, pinfo, parent_tree, di, drep, &nga_RulesData); + di->no_align = true; old_offset = offset; @@ -29153,7 +29745,7 @@ mapi_dissect_struct_ModifyRules_req(tvbuff_t *tvb _U_, int offset _U_, packet_in offset = mapi_dissect_element_ModifyRules_req_RulesCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_ModifyRules_req_RulesData(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_ModifyRules_req_RulesData(tvb, offset, pinfo, tree, di, drep, &nga_RulesData); proto_item_set_len(item, offset-old_offset); @@ -29279,9 +29871,10 @@ mapi_dissect_element_GetOwningServers_repl_CheapServersCount(tvbuff_t *tvb _U_, } static int -mapi_dissect_element_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetOwningServers_repl_OwningServers_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetOwningServers_repl_OwningServers_); return offset; } @@ -29294,14 +29887,25 @@ mapi_dissect_element_GetOwningServers_repl_OwningServers_(tvbuff_t *tvb _U_, int return offset; } +static int +mapi_dissect_conformant_GetOwningServers_repl_OwningServers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetOwningServers_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_OwningServers = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetOwningServers_repl_OwningServers(tvb, offset, pinfo, parent_tree, di, drep, &nga_OwningServers); + di->no_align = true; old_offset = offset; @@ -29315,7 +29919,7 @@ mapi_dissect_struct_GetOwningServers_repl(tvbuff_t *tvb _U_, int offset _U_, pac offset = mapi_dissect_element_GetOwningServers_repl_CheapServersCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetOwningServers_repl_OwningServers(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetOwningServers_repl_OwningServers(tvb, offset, pinfo, tree, di, drep, &nga_OwningServers); proto_item_set_len(item, offset-old_offset); @@ -29530,6 +30134,8 @@ mapi_dissect_LongTermIdFromId_repl_status(tvbuff_t *tvb _U_, int offset _U_, pac tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_LongTermIdFromId_repl_status, &item, "LongTermIdFromId_repl_status"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_LongTermIdFromId_repl_status_Success(tvb, offset, pinfo, tree, di, drep); @@ -29567,9 +30173,9 @@ mapi_dissect_element_LongTermIdFromId_repl_ReturnValue(tvbuff_t *tvb _U_, int of } static int -mapi_dissect_element_LongTermIdFromId_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *ReturnValue) +mapi_dissect_element_LongTermIdFromId_repl_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t ReturnValue) { - offset = mapi_dissect_LongTermIdFromId_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_LongTermIdFromId_repl_repl, *ReturnValue); + offset = mapi_dissect_LongTermIdFromId_repl_status(tvb, offset, pinfo, tree, di, drep, hf_mapi_LongTermIdFromId_repl_repl, ReturnValue); return offset; } @@ -29596,7 +30202,7 @@ mapi_dissect_struct_LongTermIdFromId_repl(tvbuff_t *tvb _U_, int offset _U_, pac offset = mapi_dissect_element_LongTermIdFromId_repl_ReturnValue(tvb, offset, pinfo, tree, di, drep, &ReturnValue); - offset = mapi_dissect_element_LongTermIdFromId_repl_repl(tvb, offset, pinfo, tree, di, drep, &ReturnValue); + offset = mapi_dissect_element_LongTermIdFromId_repl_repl(tvb, offset, pinfo, tree, di, drep, ReturnValue); proto_item_set_len(item, offset-old_offset); @@ -29789,9 +30395,9 @@ mapi_dissect_element_PublicFolderIsGhosted_repl_IsGhosted(tvbuff_t *tvb _U_, int } static int -mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted) +mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted) { - offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_PublicFolderIsGhosted_repl_Ghost, *IsGhosted); + offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_PublicFolderIsGhosted_repl_Ghost, IsGhosted); return offset; } @@ -29816,7 +30422,7 @@ mapi_dissect_struct_PublicFolderIsGhosted_repl(tvbuff_t *tvb _U_, int offset _U_ offset = mapi_dissect_element_PublicFolderIsGhosted_repl_IsGhosted(tvb, offset, pinfo, tree, di, drep, &IsGhosted); - offset = mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvb, offset, pinfo, tree, di, drep, &IsGhosted); + offset = mapi_dissect_element_PublicFolderIsGhosted_repl_Ghost(tvb, offset, pinfo, tree, di, drep, IsGhosted); proto_item_set_len(item, offset-old_offset); @@ -30006,7 +30612,11 @@ mapi_dissect_element_OpenEmbeddedMessage_repl_ColumnCount(tvbuff_t *tvb _U_, int static int mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientColumns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientColumns_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientColumns_); return offset; } @@ -30028,9 +30638,10 @@ mapi_dissect_element_OpenEmbeddedMessage_repl_RowCount(tvbuff_t *tvb _U_, int of } static int -mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows_); return offset; } @@ -30043,14 +30654,25 @@ mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows_(tvbuff_t *tvb _U_, return offset; } +static int +mapi_dissect_conformant_OpenEmbeddedMessage_repl_RecipientRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_OpenEmbeddedMessage_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_RecipientRows = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_OpenEmbeddedMessage_repl_RecipientRows(tvb, offset, pinfo, parent_tree, di, drep, &nga_RecipientRows); + di->no_align = true; old_offset = offset; @@ -30078,7 +30700,7 @@ mapi_dissect_struct_OpenEmbeddedMessage_repl(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_OpenEmbeddedMessage_repl_RowCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_OpenEmbeddedMessage_repl_RecipientRows(tvb, offset, pinfo, tree, di, drep, &nga_RecipientRows); proto_item_set_len(item, offset-old_offset); @@ -30368,9 +30990,10 @@ mapi_dissect_element_AddressTypes_repl_size(tvbuff_t *tvb _U_, int offset _U_, p } static int -mapi_dissect_element_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_AddressTypes_repl_transport_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_AddressTypes_repl_transport_); return offset; } @@ -30383,14 +31006,25 @@ mapi_dissect_element_AddressTypes_repl_transport_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_AddressTypes_repl_transport(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_AddressTypes_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_transport = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_AddressTypes_repl_transport(tvb, offset, pinfo, parent_tree, di, drep, &nga_transport); + di->no_align = true; old_offset = offset; @@ -30404,7 +31038,7 @@ mapi_dissect_struct_AddressTypes_repl(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = mapi_dissect_element_AddressTypes_repl_size(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_AddressTypes_repl_transport(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_AddressTypes_repl_transport(tvb, offset, pinfo, tree, di, drep, &nga_transport); proto_item_set_len(item, offset-old_offset); @@ -30494,6 +31128,8 @@ mapi_dissect_TransportSend_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_TransportSend_lpProps, &item, "TransportSend_lpProps"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case 0x0: offset = mapi_dissect_element_TransportSend_lpProps_lpProps(tvb, offset, pinfo, tree, di, drep); @@ -30522,9 +31158,9 @@ mapi_dissect_element_TransportSend_repl_NoPropertiesReturned(tvbuff_t *tvb _U_, } static int -mapi_dissect_element_TransportSend_repl_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *NoPropertiesReturned) +mapi_dissect_element_TransportSend_repl_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t NoPropertiesReturned) { - offset = mapi_dissect_TransportSend_lpProps(tvb, offset, pinfo, tree, di, drep, hf_mapi_TransportSend_repl_properties, *NoPropertiesReturned); + offset = mapi_dissect_TransportSend_lpProps(tvb, offset, pinfo, tree, di, drep, hf_mapi_TransportSend_repl_properties, NoPropertiesReturned); return offset; } @@ -30549,7 +31185,7 @@ mapi_dissect_struct_TransportSend_repl(tvbuff_t *tvb _U_, int offset _U_, packet offset = mapi_dissect_element_TransportSend_repl_NoPropertiesReturned(tvb, offset, pinfo, tree, di, drep, &NoPropertiesReturned); - offset = mapi_dissect_element_TransportSend_repl_properties(tvb, offset, pinfo, tree, di, drep, &NoPropertiesReturned); + offset = mapi_dissect_element_TransportSend_repl_properties(tvb, offset, pinfo, tree, di, drep, NoPropertiesReturned); proto_item_set_len(item, offset-old_offset); @@ -31215,9 +31851,10 @@ mapi_dissect_element_GetValidAttachments_repl_AttachmentIdCount(tvbuff_t *tvb _U } static int -mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray_); return offset; } @@ -31230,14 +31867,25 @@ mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray_(tvbuff_t *tvb _ return offset; } +static int +mapi_dissect_conformant_GetValidAttachments_repl_AttachmentIdArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetValidAttachments_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_AttachmentIdArray = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetValidAttachments_repl_AttachmentIdArray(tvb, offset, pinfo, parent_tree, di, drep, &nga_AttachmentIdArray); + di->no_align = true; old_offset = offset; @@ -31249,7 +31897,7 @@ mapi_dissect_struct_GetValidAttachments_repl(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_GetValidAttachments_repl_AttachmentIdCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetValidAttachments_repl_AttachmentIdArray(tvb, offset, pinfo, tree, di, drep, &nga_AttachmentIdArray); proto_item_set_len(item, offset-old_offset); @@ -31367,6 +32015,8 @@ mapi_dissect_Kind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, pro tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_Kind, &item, "Kind"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case MNID_ID: offset = mapi_dissect_element_Kind_lid(tvb, offset, pinfo, tree, di, drep); @@ -31405,9 +32055,9 @@ mapi_dissect_element_MAPINAMEID_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet } static int -mapi_dissect_element_MAPINAMEID_kind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *ulKind) +mapi_dissect_element_MAPINAMEID_kind(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t ulKind) { - offset = mapi_dissect_Kind(tvb, offset, pinfo, tree, di, drep, hf_mapi_MAPINAMEID_kind, *ulKind); + offset = mapi_dissect_Kind(tvb, offset, pinfo, tree, di, drep, hf_mapi_MAPINAMEID_kind, ulKind); return offset; } @@ -31434,7 +32084,7 @@ mapi_dissect_struct_MAPINAMEID(tvbuff_t *tvb _U_, int offset _U_, packet_info *p offset = mapi_dissect_element_MAPINAMEID_lpguid(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_MAPINAMEID_kind(tvb, offset, pinfo, tree, di, drep, &ulKind); + offset = mapi_dissect_element_MAPINAMEID_kind(tvb, offset, pinfo, tree, di, drep, ulKind); proto_item_set_len(item, offset-old_offset); @@ -31478,9 +32128,10 @@ mapi_dissect_element_GetNamesFromIDs_req_PropertyIdCount(tvbuff_t *tvb _U_, int } static int -mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetNamesFromIDs_req_PropertyIds_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetNamesFromIDs_req_PropertyIds_); return offset; } @@ -31493,14 +32144,25 @@ mapi_dissect_element_GetNamesFromIDs_req_PropertyIds_(tvbuff_t *tvb _U_, int off return offset; } +static int +mapi_dissect_conformant_GetNamesFromIDs_req_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetNamesFromIDs_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyIds = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetNamesFromIDs_req_PropertyIds(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyIds); + di->no_align = true; old_offset = offset; @@ -31516,7 +32178,7 @@ mapi_dissect_struct_GetNamesFromIDs_req(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_GetNamesFromIDs_req_PropertyIdCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetNamesFromIDs_req_PropertyIds(tvb, offset, pinfo, tree, di, drep, &nga_PropertyIds); proto_item_set_len(item, offset-old_offset); @@ -31542,9 +32204,10 @@ mapi_dissect_element_GetNamesFromIDs_repl_count(tvbuff_t *tvb _U_, int offset _U } static int -mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetNamesFromIDs_repl_nameid_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetNamesFromIDs_repl_nameid_); return offset; } @@ -31557,14 +32220,25 @@ mapi_dissect_element_GetNamesFromIDs_repl_nameid_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_GetNamesFromIDs_repl_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetNamesFromIDs_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_nameid = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetNamesFromIDs_repl_nameid(tvb, offset, pinfo, parent_tree, di, drep, &nga_nameid); + di->no_align = true; old_offset = offset; @@ -31576,7 +32250,7 @@ mapi_dissect_struct_GetNamesFromIDs_repl(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_GetNamesFromIDs_repl_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetNamesFromIDs_repl_nameid(tvb, offset, pinfo, tree, di, drep, &nga_nameid); proto_item_set_len(item, offset-old_offset); @@ -31629,9 +32303,10 @@ mapi_dissect_element_GetIDsFromNames_req_count(tvbuff_t *tvb _U_, int offset _U_ } static int -mapi_dissect_element_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetIDsFromNames_req_nameid_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetIDsFromNames_req_nameid_); return offset; } @@ -31644,14 +32319,25 @@ mapi_dissect_element_GetIDsFromNames_req_nameid_(tvbuff_t *tvb _U_, int offset _ return offset; } +static int +mapi_dissect_conformant_GetIDsFromNames_req_nameid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetIDsFromNames_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_nameid = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetIDsFromNames_req_nameid(tvb, offset, pinfo, parent_tree, di, drep, &nga_nameid); + di->no_align = true; old_offset = offset; @@ -31669,7 +32355,7 @@ mapi_dissect_struct_GetIDsFromNames_req(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_GetIDsFromNames_req_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetIDsFromNames_req_nameid(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetIDsFromNames_req_nameid(tvb, offset, pinfo, tree, di, drep, &nga_nameid); proto_item_set_len(item, offset-old_offset); @@ -31695,9 +32381,10 @@ mapi_dissect_element_GetIDsFromNames_repl_count(tvbuff_t *tvb _U_, int offset _U } static int -mapi_dissect_element_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetIDsFromNames_repl_propID_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetIDsFromNames_repl_propID_); return offset; } @@ -31710,14 +32397,25 @@ mapi_dissect_element_GetIDsFromNames_repl_propID_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_GetIDsFromNames_repl_propID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetIDsFromNames_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_propID = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetIDsFromNames_repl_propID(tvb, offset, pinfo, parent_tree, di, drep, &nga_propID); + di->no_align = true; old_offset = offset; @@ -31729,7 +32427,7 @@ mapi_dissect_struct_GetIDsFromNames_repl(tvbuff_t *tvb _U_, int offset _U_, pack offset = mapi_dissect_element_GetIDsFromNames_repl_count(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetIDsFromNames_repl_propID(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetIDsFromNames_repl_propID(tvb, offset, pinfo, tree, di, drep, &nga_propID); proto_item_set_len(item, offset-old_offset); @@ -32657,6 +33355,8 @@ mapi_dissect_QueryNamedProperties_guid(tvbuff_t *tvb _U_, int offset _U_, packet tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_QueryNamedProperties_guid, &item, "QueryNamedProperties_guid"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -32712,9 +33412,9 @@ mapi_dissect_element_QueryNamedProperties_req_HasGuid(tvbuff_t *tvb _U_, int off } static int -mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *HasGuid) +mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t HasGuid) { - offset = mapi_dissect_QueryNamedProperties_guid(tvb, offset, pinfo, tree, di, drep, hf_mapi_QueryNamedProperties_req_PropertyGuid, *HasGuid); + offset = mapi_dissect_QueryNamedProperties_guid(tvb, offset, pinfo, tree, di, drep, hf_mapi_QueryNamedProperties_req_PropertyGuid, HasGuid); return offset; } @@ -32745,7 +33445,7 @@ mapi_dissect_struct_QueryNamedProperties_req(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_QueryNamedProperties_req_HasGuid(tvb, offset, pinfo, tree, di, drep, &HasGuid); - offset = mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvb, offset, pinfo, tree, di, drep, &HasGuid); + offset = mapi_dissect_element_QueryNamedProperties_req_PropertyGuid(tvb, offset, pinfo, tree, di, drep, HasGuid); proto_item_set_len(item, offset-old_offset); @@ -32774,7 +33474,11 @@ mapi_dissect_element_QueryNamedProperties_repl_IdCount(tvbuff_t *tvb _U_, int of static int mapi_dissect_element_QueryNamedProperties_repl_PropertyIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_QueryNamedProperties_repl_PropertyIds_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_QueryNamedProperties_repl_PropertyIds_); return offset; } @@ -32788,9 +33492,10 @@ mapi_dissect_element_QueryNamedProperties_repl_PropertyIds_(tvbuff_t *tvb _U_, i } static int -mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_QueryNamedProperties_repl_PropertyNames_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_QueryNamedProperties_repl_PropertyNames_); return offset; } @@ -32803,14 +33508,25 @@ mapi_dissect_element_QueryNamedProperties_repl_PropertyNames_(tvbuff_t *tvb _U_, return offset; } +static int +mapi_dissect_conformant_QueryNamedProperties_repl_PropertyNames(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_QueryNamedProperties_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyNames = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_QueryNamedProperties_repl_PropertyNames(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyNames); + di->no_align = true; old_offset = offset; @@ -32824,7 +33540,7 @@ mapi_dissect_struct_QueryNamedProperties_repl(tvbuff_t *tvb _U_, int offset _U_, offset = mapi_dissect_element_QueryNamedProperties_repl_PropertyIds(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_QueryNamedProperties_repl_PropertyNames(tvb, offset, pinfo, tree, di, drep, &nga_PropertyNames); proto_item_set_len(item, offset-old_offset); @@ -32913,9 +33629,10 @@ mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIdCount(tvbuff_t *tvb _U } static int -mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds_); return offset; } @@ -32928,14 +33645,25 @@ mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds_(tvbuff_t *tvb _U_, return offset; } +static int +mapi_dissect_conformant_GetPerUserLongTermIds_repl_LongTermIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetPerUserLongTermIds_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_LongTermIds = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetPerUserLongTermIds_repl_LongTermIds(tvb, offset, pinfo, parent_tree, di, drep, &nga_LongTermIds); + di->no_align = true; old_offset = offset; @@ -32947,7 +33675,7 @@ mapi_dissect_struct_GetPerUserLongTermIds_repl(tvbuff_t *tvb _U_, int offset _U_ offset = mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIdCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetPerUserLongTermIds_repl_LongTermIds(tvb, offset, pinfo, tree, di, drep, &nga_LongTermIds); proto_item_set_len(item, offset-old_offset); @@ -33271,9 +33999,10 @@ mapi_dissect_element_SetReadFlags_req_MessageIdCount(tvbuff_t *tvb _U_, int offs } static int -mapi_dissect_element_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SetReadFlags_req_MessageIds_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SetReadFlags_req_MessageIds_); return offset; } @@ -33286,14 +34015,25 @@ mapi_dissect_element_SetReadFlags_req_MessageIds_(tvbuff_t *tvb _U_, int offset return offset; } +static int +mapi_dissect_conformant_SetReadFlags_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SetReadFlags_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_MessageIds = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SetReadFlags_req_MessageIds(tvb, offset, pinfo, parent_tree, di, drep, &nga_MessageIds); + di->no_align = true; old_offset = offset; @@ -33313,7 +34053,7 @@ mapi_dissect_struct_SetReadFlags_req(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_SetReadFlags_req_MessageIdCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SetReadFlags_req_MessageIds(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SetReadFlags_req_MessageIds(tvb, offset, pinfo, tree, di, drep, &nga_MessageIds); proto_item_set_len(item, offset-old_offset); @@ -33454,9 +34194,10 @@ mapi_dissect_element_CopyProperties_repl_PropertyProblemCount(tvbuff_t *tvb _U_, } static int -mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_CopyProperties_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_CopyProperties_repl_PropertyProblem_); return offset; } @@ -33469,14 +34210,25 @@ mapi_dissect_element_CopyProperties_repl_PropertyProblem_(tvbuff_t *tvb _U_, int return offset; } +static int +mapi_dissect_conformant_CopyProperties_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_CopyProperties_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_CopyProperties_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -33488,7 +34240,7 @@ mapi_dissect_struct_CopyProperties_repl(tvbuff_t *tvb _U_, int offset _U_, packe offset = mapi_dissect_element_CopyProperties_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_CopyProperties_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -33693,9 +34445,10 @@ mapi_dissect_element_GetReceiveFolderTable_repl_cValues(tvbuff_t *tvb _U_, int o } static int -mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_GetReceiveFolderTable_repl_entries_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_GetReceiveFolderTable_repl_entries_); return offset; } @@ -33708,14 +34461,25 @@ mapi_dissect_element_GetReceiveFolderTable_repl_entries_(tvbuff_t *tvb _U_, int return offset; } +static int +mapi_dissect_conformant_GetReceiveFolderTable_repl_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_GetReceiveFolderTable_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_entries = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_GetReceiveFolderTable_repl_entries(tvb, offset, pinfo, parent_tree, di, drep, &nga_entries); + di->no_align = true; old_offset = offset; @@ -33727,7 +34491,7 @@ mapi_dissect_struct_GetReceiveFolderTable_repl(tvbuff_t *tvb _U_, int offset _U_ offset = mapi_dissect_element_GetReceiveFolderTable_repl_cValues(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_GetReceiveFolderTable_repl_entries(tvb, offset, pinfo, tree, di, drep, &nga_entries); proto_item_set_len(item, offset-old_offset); @@ -34192,6 +34956,8 @@ mapi_dissect_OptionsData_HelpFileName(tvbuff_t *tvb _U_, int offset _U_, packet_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_OptionsData_HelpFileName, &item, "OptionsData_HelpFileName"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case 0x0: break; @@ -34241,7 +35007,11 @@ mapi_dissect_element_OptionsData_repl_HelpFileSize(tvbuff_t *tvb _U_, int offset static int mapi_dissect_element_OptionsData_repl_HelpFile(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OptionsData_repl_HelpFile_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_OptionsData_repl_HelpFile_); return offset; } @@ -34255,9 +35025,9 @@ mapi_dissect_element_OptionsData_repl_HelpFile_(tvbuff_t *tvb _U_, int offset _U } static int -mapi_dissect_element_OptionsData_repl_HelpFileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *HelpFileSize) +mapi_dissect_element_OptionsData_repl_HelpFileName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t HelpFileSize) { - offset = mapi_dissect_OptionsData_HelpFileName(tvb, offset, pinfo, tree, di, drep, hf_mapi_OptionsData_repl_HelpFileName, *HelpFileSize); + offset = mapi_dissect_OptionsData_HelpFileName(tvb, offset, pinfo, tree, di, drep, hf_mapi_OptionsData_repl_HelpFileName, HelpFileSize); return offset; } @@ -34288,7 +35058,7 @@ mapi_dissect_struct_OptionsData_repl(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = mapi_dissect_element_OptionsData_repl_HelpFile(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_OptionsData_repl_HelpFileName(tvb, offset, pinfo, tree, di, drep, &HelpFileSize); + offset = mapi_dissect_element_OptionsData_repl_HelpFileName(tvb, offset, pinfo, tree, di, drep, HelpFileSize); proto_item_set_len(item, offset-old_offset); @@ -35390,9 +36160,10 @@ mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblemCount(tvbuff_t } static int -mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem_); return offset; } @@ -35405,14 +36176,25 @@ mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem_(tvbuff_t *tv return offset; } +static int +mapi_dissect_conformant_SetPropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_SetPropertiesNoReplicate_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_SetPropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -35424,7 +36206,7 @@ mapi_dissect_struct_SetPropertiesNoReplicate_repl(tvbuff_t *tvb _U_, int offset offset = mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SetPropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -35513,9 +36295,10 @@ mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblemCount(tvbuf } static int -mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem_); return offset; } @@ -35528,14 +36311,25 @@ mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem_(tvbuff_t return offset; } +static int +mapi_dissect_conformant_DeletePropertiesNoReplicate_repl_PropertyProblem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_DeletePropertiesNoReplicate_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_PropertyProblem = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_DeletePropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, parent_tree, di, drep, &nga_PropertyProblem); + di->no_align = true; old_offset = offset; @@ -35547,7 +36341,7 @@ mapi_dissect_struct_DeletePropertiesNoReplicate_repl(tvbuff_t *tvb _U_, int offs offset = mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblemCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_DeletePropertiesNoReplicate_repl_PropertyProblem(tvb, offset, pinfo, tree, di, drep, &nga_PropertyProblem); proto_item_set_len(item, offset-old_offset); @@ -36162,7 +36956,11 @@ mapi_dissect_element_OpenPublicFolderByName_req_handle_idx(tvbuff_t *tvb _U_, in static int mapi_dissect_element_OpenPublicFolderByName_req_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_vstring(tvb, offset, pinfo, tree, di, drep, 1, hf_mapi_OpenPublicFolderByName_req_name, false, NULL); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, 1, hf_mapi_OpenPublicFolderByName_req_name, false, &nga, &data); + proto_item_append_text(tree, ": %s", data); return offset; } @@ -36221,9 +37019,9 @@ mapi_dissect_element_OpenPublicFolderByName_repl_IsGhosted(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *IsGhosted) +mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t IsGhosted) { - offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenPublicFolderByName_repl_Ghost, *IsGhosted); + offset = mapi_dissect_IsGhosted(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenPublicFolderByName_repl_Ghost, IsGhosted); return offset; } @@ -36250,7 +37048,7 @@ mapi_dissect_struct_OpenPublicFolderByName_repl(tvbuff_t *tvb _U_, int offset _U offset = mapi_dissect_element_OpenPublicFolderByName_repl_IsGhosted(tvb, offset, pinfo, tree, di, drep, &IsGhosted); - offset = mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvb, offset, pinfo, tree, di, drep, &IsGhosted); + offset = mapi_dissect_element_OpenPublicFolderByName_repl_Ghost(tvb, offset, pinfo, tree, di, drep, IsGhosted); proto_item_set_len(item, offset-old_offset); @@ -36576,9 +37374,10 @@ mapi_dissect_element_HardDeleteMessages_req_MessageIdCount(tvbuff_t *tvb _U_, in } static int -mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_HardDeleteMessages_req_MessageIds_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, mapi_dissect_element_HardDeleteMessages_req_MessageIds_); return offset; } @@ -36591,14 +37390,25 @@ mapi_dissect_element_HardDeleteMessages_req_MessageIds_(tvbuff_t *tvb _U_, int o return offset; } +static int +mapi_dissect_conformant_HardDeleteMessages_req_MessageIds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int mapi_dissect_struct_HardDeleteMessages_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_MessageIds = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; bool oldalign = di->no_align; int old_offset; + offset = mapi_dissect_conformant_HardDeleteMessages_req_MessageIds(tvb, offset, pinfo, parent_tree, di, drep, &nga_MessageIds); + di->no_align = true; old_offset = offset; @@ -36618,7 +37428,7 @@ mapi_dissect_struct_HardDeleteMessages_req(tvbuff_t *tvb _U_, int offset _U_, pa offset = mapi_dissect_element_HardDeleteMessages_req_MessageIdCount(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_HardDeleteMessages_req_MessageIds(tvb, offset, pinfo, tree, di, drep, &nga_MessageIds); proto_item_set_len(item, offset-old_offset); @@ -38348,6 +39158,8 @@ mapi_dissect_RopRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_RopRequest, &item, "RopRequest"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case RopRelease: offset = mapi_dissect_element_RopRequest_Release(tvb, offset, pinfo, tree, di, drep); @@ -39940,6 +40752,8 @@ mapi_dissect_RopReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_RopReply, &item, "RopReply"); } + UNION_ALIGN_TO_8_BYTES; + switch(level) { case RopRelease: offset = mapi_dissect_element_RopReply_Release(tvb, offset, pinfo, tree, di, drep); @@ -40440,9 +41254,9 @@ mapi_dissect_RopReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, /* IDL: } */ static int -mapi_dissect_element_EcDoRpcMapiRequest_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *opnum) +mapi_dissect_element_EcDoRpcMapiRequest_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t opnum) { - offset = mapi_dissect_RopRequest(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiRequest_u, *opnum); + offset = mapi_dissect_RopRequest(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiRequest_u, opnum); return offset; } @@ -40454,9 +41268,9 @@ mapi_dissect_element_EcDoRpcMapiRequest_u(tvbuff_t *tvb _U_, int offset _U_, pac /* IDL: } */ static int -mapi_dissect_element_EcDoRpcMapiResponse_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *opnum) +mapi_dissect_element_EcDoRpcMapiResponse_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t opnum) { - offset = mapi_dissect_RopReply(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiResponse_u, *opnum); + offset = mapi_dissect_RopReply(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiResponse_u, opnum); return offset; } @@ -42542,6 +43356,8 @@ mapi_dissect_AuxDataVersion1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_AuxDataVersion1, &item, "AuxDataVersion1"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case AUX_TYPE_PERF_REQUESTID: offset = mapi_dissect_element_AuxDataVersion1_AuxiliaryPerfRequestId(tvb, offset, pinfo, tree, di, drep); @@ -42877,6 +43693,8 @@ mapi_dissect_AuxDataVersion2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_AuxDataVersion2, &item, "AuxDataVersion2"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case AUX_TYPE_PERF_REQUESTID: offset = mapi_dissect_element_AuxDataVersion2_AuxiliaryPerfRequestId(tvb, offset, pinfo, tree, di, drep); @@ -43234,9 +44052,9 @@ mapi_dissect_element_RopInput_RopId(tvbuff_t *tvb _U_, int offset _U_, packet_in } static int -mapi_dissect_element_RopInput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId) +mapi_dissect_element_RopInput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RopId) { - offset = mapi_dissect_RopRequest(tvb, offset, pinfo, tree, di, drep, hf_mapi_RopInput_u, *RopId); + offset = mapi_dissect_RopRequest(tvb, offset, pinfo, tree, di, drep, hf_mapi_RopInput_u, RopId); return offset; } @@ -43261,7 +44079,7 @@ mapi_dissect_struct_RopInput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin offset = mapi_dissect_element_RopInput_RopId(tvb, offset, pinfo, tree, di, drep, &RopId); - offset = mapi_dissect_element_RopInput_u(tvb, offset, pinfo, tree, di, drep, &RopId); + offset = mapi_dissect_element_RopInput_u(tvb, offset, pinfo, tree, di, drep, RopId); proto_item_set_len(item, offset-old_offset); @@ -43377,9 +44195,9 @@ mapi_dissect_element_RopOutput_RopId(tvbuff_t *tvb _U_, int offset _U_, packet_i } static int -mapi_dissect_element_RopOutput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t *RopId) +mapi_dissect_element_RopOutput_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint8_t RopId) { - offset = mapi_dissect_RopReply(tvb, offset, pinfo, tree, di, drep, hf_mapi_RopOutput_u, *RopId); + offset = mapi_dissect_RopReply(tvb, offset, pinfo, tree, di, drep, hf_mapi_RopOutput_u, RopId); return offset; } @@ -43404,7 +44222,7 @@ mapi_dissect_struct_RopOutput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi offset = mapi_dissect_element_RopOutput_RopId(tvb, offset, pinfo, tree, di, drep, &RopId); - offset = mapi_dissect_element_RopOutput_u(tvb, offset, pinfo, tree, di, drep, &RopId); + offset = mapi_dissect_element_RopOutput_u(tvb, offset, pinfo, tree, di, drep, RopId); proto_item_set_len(item, offset-old_offset); @@ -43668,9 +44486,13 @@ mapi_dissect_element_EcDoConnect_szDNPrefix_(tvbuff_t *tvb _U_, int offset _U_, static int mapi_dissect_element_EcDoConnect_szDNPrefix__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnect_szDNPrefix, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnect_szDNPrefix, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -43695,9 +44517,13 @@ mapi_dissect_element_EcDoConnect_szDisplayName_(tvbuff_t *tvb _U_, int offset _U static int mapi_dissect_element_EcDoConnect_szDisplayName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnect_szDisplayName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnect_szDisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -44018,7 +44844,13 @@ mapi_dissect_element_EcGetMoreRpc_rgb(tvbuff_t *tvb _U_, int offset _U_, packet_ static int mapi_dissect_element_EcGetMoreRpc_rgb_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_EcGetMoreRpc_rgb__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_EcGetMoreRpc_rgb__); return offset; } @@ -44135,7 +44967,11 @@ mapi_dissect_element_EcRRegisterPushNotification_rgbContext(tvbuff_t *tvb _U_, i static int mapi_dissect_element_EcRRegisterPushNotification_rgbContext_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_EcRRegisterPushNotification_rgbContext__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_EcRRegisterPushNotification_rgbContext__); return offset; } @@ -44175,7 +45011,11 @@ mapi_dissect_element_EcRRegisterPushNotification_rgbCallbackAddress(tvbuff_t *tv static int mapi_dissect_element_EcRRegisterPushNotification_rgbCallbackAddress_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_EcRRegisterPushNotification_rgbCallbackAddress__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, mapi_dissect_element_EcRRegisterPushNotification_rgbCallbackAddress__); return offset; } @@ -44384,9 +45224,13 @@ mapi_dissect_element_EcRGetDCName_szDomainName(tvbuff_t *tvb _U_, int offset _U_ static int mapi_dissect_element_EcRGetDCName_szDomainName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcRGetDCName_szDomainName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcRGetDCName_szDomainName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -44458,9 +45302,13 @@ mapi_dissect_element_EcRNetGetDCName_szDomainName(tvbuff_t *tvb _U_, int offset static int mapi_dissect_element_EcRNetGetDCName_szDomainName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcRNetGetDCName_szDomainName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcRNetGetDCName_szDomainName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -44860,9 +45708,13 @@ mapi_dissect_element_EcDoConnectEx_szDNPrefix_(tvbuff_t *tvb _U_, int offset _U_ static int mapi_dissect_element_EcDoConnectEx_szDNPrefix__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnectEx_szDNPrefix, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnectEx_szDNPrefix, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -44887,9 +45739,13 @@ mapi_dissect_element_EcDoConnectEx_szDisplayName_(tvbuff_t *tvb _U_, int offset static int mapi_dissect_element_EcDoConnectEx_szDisplayName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnectEx_szDisplayName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mapi_mapi_EcDoConnectEx_szDisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-mdssvc.c b/epan/dissectors/packet-dcerpc-mdssvc.c index aad0601367..c9b8dac872 100644 --- a/epan/dissectors/packet-dcerpc-mdssvc.c +++ b/epan/dissectors/packet-dcerpc-mdssvc.c @@ -265,9 +265,13 @@ mdssvc_dissect_element_open_unkn3_(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int mdssvc_dissect_element_open_share_mount_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_mount_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_mount_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -276,9 +280,13 @@ mdssvc_dissect_element_open_share_mount_path(tvbuff_t *tvb _U_, int offset _U_, static int mdssvc_dissect_element_open_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -287,9 +295,13 @@ mdssvc_dissect_element_open_share_name(tvbuff_t *tvb _U_, int offset _U_, packet static int mdssvc_dissect_element_open_share_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_mdssvc_mdssvc_open_share_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-nspi.c b/epan/dissectors/packet-dcerpc-nspi.c index c5a48135d8..a850f8e27b 100644 --- a/epan/dissectors/packet-dcerpc-nspi.c +++ b/epan/dissectors/packet-dcerpc-nspi.c @@ -3691,7 +3691,7 @@ static int nspi_dissect_element_SAndRestriction_lpRes__(tvbuff_t *tvb _U_, int o static int nspi_dissect_element_SRestriction_CTR_resAnd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SRestriction_CTR_resProperty(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SRestriction_rt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rt); -static int nspi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rt); +static int nspi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t rt); static int nspi_dissect_element_SSortOrder_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SSortOrder_ulOrder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SSortOrderSet_cSorts(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -3800,8 +3800,9 @@ static int nspi_dissect_element_SRow_lpProps(tvbuff_t *tvb _U_, int offset _U_, static int nspi_dissect_element_SRow_lpProps_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SRow_lpProps__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_SRowSet_cRows(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int nspi_dissect_element_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int nspi_dissect_element_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int nspi_dissect_element_SRowSet_aRow_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int nspi_dissect_conformant_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int nspi_dissect_element_NspiBind_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_NspiBind_settings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int nspi_dissect_element_NspiBind_settings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -7582,7 +7583,13 @@ nspi_dissect_element_SPropTagArray_aulPropTag(tvbuff_t *tvb _U_, int offset _U_, static int nspi_dissect_element_SPropTagArray_aulPropTag_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SPropTagArray_aulPropTag__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SPropTagArray_aulPropTag__); return offset; } @@ -7651,7 +7658,13 @@ nspi_dissect_element_instance_key_value(tvbuff_t *tvb _U_, int offset _U_, packe static int nspi_dissect_element_instance_key_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_instance_key_value__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_instance_key_value__); return offset; } @@ -7901,7 +7914,11 @@ nspi_dissect_element_SAndRestriction_lpRes(tvbuff_t *tvb _U_, int offset _U_, pa static int nspi_dissect_element_SAndRestriction_lpRes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SAndRestriction_lpRes__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SAndRestriction_lpRes__); return offset; } @@ -7980,8 +7997,9 @@ nspi_dissect_SRestriction_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_nspi_SRestriction_CTR, &item, "SRestriction_CTR"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case RES_AND: @@ -8012,9 +8030,9 @@ nspi_dissect_element_SRestriction_rt(tvbuff_t *tvb _U_, int offset _U_, packet_i } static int -nspi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *rt) +nspi_dissect_element_SRestriction_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t rt) { - offset = nspi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_nspi_SRestriction_PTTYPE, *rt); + offset = nspi_dissect_SRestriction_CTR(tvb, offset, pinfo, tree, di, drep, hf_nspi_SRestriction_PTTYPE, rt); return offset; } @@ -8038,7 +8056,7 @@ nspi_dissect_struct_SRestriction(tvbuff_t *tvb _U_, int offset _U_, packet_info offset = nspi_dissect_element_SRestriction_rt(tvb, offset, pinfo, tree, di, drep, &rt); - offset = nspi_dissect_element_SRestriction_res(tvb, offset, pinfo, tree, di, drep, &rt); + offset = nspi_dissect_element_SRestriction_res(tvb, offset, pinfo, tree, di, drep, rt); proto_item_set_len(item, offset-old_offset); @@ -8147,7 +8165,11 @@ nspi_dissect_element_SSortOrderSet_aSort(tvbuff_t *tvb _U_, int offset _U_, pack static int nspi_dissect_element_SSortOrderSet_aSort_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SSortOrderSet_aSort__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SSortOrderSet_aSort__); return offset; } @@ -8211,9 +8233,13 @@ nspi_dissect_element_NAME_STRING_str(tvbuff_t *tvb _U_, int offset _U_, packet_i static int nspi_dissect_element_NAME_STRING_str_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_nspi_NAME_STRING_str, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_nspi_NAME_STRING_str, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8320,7 +8346,11 @@ nspi_dissect_element_SBinary_lpb(tvbuff_t *tvb _U_, int offset _U_, packet_info static int nspi_dissect_element_SBinary_lpb_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SBinary_lpb__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SBinary_lpb__); return offset; } @@ -8442,7 +8472,11 @@ nspi_dissect_element_SShortArray_lpi(tvbuff_t *tvb _U_, int offset _U_, packet_i static int nspi_dissect_element_SShortArray_lpi_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SShortArray_lpi__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SShortArray_lpi__); return offset; } @@ -8511,7 +8545,11 @@ nspi_dissect_element_MV_LONG_STRUCT_lpl(tvbuff_t *tvb _U_, int offset _U_, packe static int nspi_dissect_element_MV_LONG_STRUCT_lpl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_MV_LONG_STRUCT_lpl__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_MV_LONG_STRUCT_lpl__); return offset; } @@ -8563,9 +8601,11 @@ nspi_dissect_struct_MV_LONG_STRUCT(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int nspi_dissect_element_LPSTR_lppszA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, 1, hf_nspi_LPSTR_lppszA, false, &data); + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, 1, hf_nspi_LPSTR_lppszA, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8625,7 +8665,11 @@ nspi_dissect_element_SLPSTRArray_strings(tvbuff_t *tvb _U_, int offset _U_, pack static int nspi_dissect_element_SLPSTRArray_strings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SLPSTRArray_strings__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SLPSTRArray_strings__); return offset; } @@ -8702,7 +8746,11 @@ nspi_dissect_element_SBinaryArray_lpbin(tvbuff_t *tvb _U_, int offset _U_, packe static int nspi_dissect_element_SBinaryArray_lpbin_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SBinaryArray_lpbin__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SBinaryArray_lpbin__); return offset; } @@ -8771,7 +8819,11 @@ nspi_dissect_element_SGuidArray_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet static int nspi_dissect_element_SGuidArray_lpguid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SGuidArray_lpguid__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SGuidArray_lpguid__); return offset; } @@ -8839,7 +8891,11 @@ nspi_dissect_element_MV_UNICODE_STRUCT_lpi(tvbuff_t *tvb _U_, int offset _U_, pa static int nspi_dissect_element_MV_UNICODE_STRUCT_lpi_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_MV_UNICODE_STRUCT_lpi__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_MV_UNICODE_STRUCT_lpi__); return offset; } @@ -8908,7 +8964,11 @@ nspi_dissect_element_SDateTimeArray_lpft(tvbuff_t *tvb _U_, int offset _U_, pack static int nspi_dissect_element_SDateTimeArray_lpft_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SDateTimeArray_lpft__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SDateTimeArray_lpft__); return offset; } @@ -9009,9 +9069,13 @@ nspi_dissect_element_SPropValue_CTR_lpszA(tvbuff_t *tvb _U_, int offset _U_, pac static int nspi_dissect_element_SPropValue_CTR_lpszA_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_nspi_SPropValue_CTR_lpszA, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_nspi_SPropValue_CTR_lpszA, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9036,9 +9100,13 @@ nspi_dissect_element_SPropValue_CTR_lpszW(tvbuff_t *tvb _U_, int offset _U_, pac static int nspi_dissect_element_SPropValue_CTR_lpszW_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_nspi_SPropValue_CTR_lpszW, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_nspi_SPropValue_CTR_lpszW, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9161,8 +9229,9 @@ nspi_dissect_SPropValue_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_nspi_SPropValue_CTR, &item, "SPropValue_CTR"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case PT_I2: @@ -9340,7 +9409,11 @@ nspi_dissect_element_SRow_lpProps(tvbuff_t *tvb _U_, int offset _U_, packet_info static int nspi_dissect_element_SRow_lpProps_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SRow_lpProps__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_SRow_lpProps__); return offset; } @@ -9401,9 +9474,10 @@ nspi_dissect_element_SRowSet_cRows(tvbuff_t *tvb _U_, int offset _U_, packet_inf } static int -nspi_dissect_element_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +nspi_dissect_element_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_SRowSet_aRow_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, nspi_dissect_element_SRowSet_aRow_); return offset; } @@ -9416,13 +9490,24 @@ nspi_dissect_element_SRowSet_aRow_(tvbuff_t *tvb _U_, int offset _U_, packet_inf return offset; } +static int +nspi_dissect_conformant_SRowSet_aRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int nspi_dissect_struct_SRowSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_aRow = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = nspi_dissect_conformant_SRowSet_aRow(tvb, offset, pinfo, parent_tree, di, drep, &nga_aRow); + ALIGN_TO_5_BYTES; old_offset = offset; @@ -9434,16 +9519,12 @@ nspi_dissect_struct_SRowSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf offset = nspi_dissect_element_SRowSet_cRows(tvb, offset, pinfo, tree, di, drep); - offset = nspi_dissect_element_SRowSet_aRow(tvb, offset, pinfo, tree, di, drep); + offset = nspi_dissect_element_SRowSet_aRow(tvb, offset, pinfo, tree, di, drep, &nga_aRow); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; } @@ -9675,7 +9756,11 @@ nspi_dissect_element_NspiQueryRows_instance_key(tvbuff_t *tvb _U_, int offset _U static int nspi_dissect_element_NspiQueryRows_instance_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_NspiQueryRows_instance_key__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_NspiQueryRows_instance_key__); return offset; } @@ -10068,7 +10153,11 @@ nspi_dissect_element_NspiDNToEph_server_dn(tvbuff_t *tvb _U_, int offset _U_, pa static int nspi_dissect_element_NspiDNToEph_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, nspi_dissect_element_NspiDNToEph_server_dn__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, nspi_dissect_element_NspiDNToEph_server_dn__); return offset; } diff --git a/epan/dissectors/packet-dcerpc-rcg.c b/epan/dissectors/packet-dcerpc-rcg.c index 02104593be..ed11d41811 100644 --- a/epan/dissectors/packet-dcerpc-rcg.c +++ b/epan/dissectors/packet-dcerpc-rcg.c @@ -381,8 +381,9 @@ static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials(tvbuff_t *tv static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_CredentialCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); +static int rcg_dissect_conformant_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga); static int rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_cbData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -578,7 +579,7 @@ static int rcg_dissect_element_KerbInputUnion_destroyKeyAgreement(tvbuff_t *tvb static int rcg_dissect_element_KerbInputUnion_keyAgreementGenerateNonce(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KerbInputUnion_finalizeKeyAgreement(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KerbCredIsoRemoteInput_CallId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); -static int rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); +static int rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId); static int rcg_dissect_element_KerbOutputUnion_negociateVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KerbOutputUnion_buildAsReqAuthenticator(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KerbOutputUnion_verifyServiceTicket(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -599,7 +600,7 @@ static int rcg_dissect_element_KerbOutputUnion_keyAgreementGenerateNonce(tvbuff_ static int rcg_dissect_element_KerbOutputUnion_finalizeKeyAgreement(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_KerbCredIsoRemoteOutput_CallId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); static int rcg_dissect_element_KerbCredIsoRemoteOutput_Status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); +static int rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId); static int rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -638,7 +639,7 @@ static int rcg_dissect_element_NtlmCredInput_calculateNtResponse(tvbuff_t *tvb _ static int rcg_dissect_element_NtlmCredInput_calculateUserSessionKeyNt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_NtlmCredInput_compareCredentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_NtlmCredIsoRemoteInput_CallId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); -static int rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); +static int rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId); static int rcg_dissect_element_NtlmCredOutput_negotiateVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_NtlmCredOutput_lm20GetNtlm3ChallengeResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_NtlmCredOutput_calculateNtResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -646,7 +647,7 @@ static int rcg_dissect_element_NtlmCredOutput_calculateUserSessionKeyNt(tvbuff_t static int rcg_dissect_element_NtlmCredOutput_compareCredentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int rcg_dissect_element_NtlmCredIsoRemoteOutput_CallId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); static int rcg_dissect_element_NtlmCredIsoRemoteOutput_Status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId); +static int rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId); #include #include "packet-kerberos.h" static int @@ -664,7 +665,7 @@ rcg_dissect_element_KERB_ASN1_DATA_CHECKSUM_checksum_(tvbuff_t *tvb, int offset, int rcg_dissect_struct_KerbCredIsoRemoteOutput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) { - guint16 CallId = 0; + uint16_t CallId = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -677,7 +678,7 @@ rcg_dissect_struct_KerbCredIsoRemoteOutput(tvbuff_t *tvb _U_, int offset _U_, pa offset = rcg_dissect_element_KerbCredIsoRemoteOutput_CallId(tvb, offset, pinfo, tree, di, drep, &CallId); col_set_str(pinfo->cinfo, COL_INFO, val_to_str(CallId, rcg_RemoteGuardCallId_vals, "unknown operation (%u)")); offset = rcg_dissect_element_KerbCredIsoRemoteOutput_Status(tvb, offset, pinfo, tree, di, drep); - offset = rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvb, offset, pinfo, tree, di, drep, &CallId); + offset = rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvb, offset, pinfo, tree, di, drep, CallId); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { @@ -688,7 +689,7 @@ rcg_dissect_struct_KerbCredIsoRemoteOutput(tvbuff_t *tvb _U_, int offset _U_, pa int rcg_dissect_struct_KerbCredIsoRemoteInput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) { - guint16 CallId = 0; + uint16_t CallId = 0; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; @@ -700,7 +701,7 @@ rcg_dissect_struct_KerbCredIsoRemoteInput(tvbuff_t *tvb _U_, int offset _U_, pac } offset = rcg_dissect_element_KerbCredIsoRemoteInput_CallId(tvb, offset, pinfo, tree, di, drep, &CallId); col_set_str(pinfo->cinfo, COL_INFO, val_to_str(CallId, rcg_RemoteGuardCallId_vals, "unknown operation (%u)")); - offset = rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvb, offset, pinfo, tree, di, drep, &CallId); + offset = rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvb, offset, pinfo, tree, di, drep, CallId); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { @@ -725,7 +726,7 @@ rcg_dissect_struct_NtlmCredIsoRemoteOutput(tvbuff_t *tvb _U_, int offset _U_, pa offset = rcg_dissect_element_NtlmCredIsoRemoteOutput_CallId(tvb, offset, pinfo, tree, di, drep, &CallId); col_set_str(pinfo->cinfo, COL_INFO, val_to_str(CallId, rcg_RemoteGuardCallId_vals, "unknown operation (%u)")); offset = rcg_dissect_element_NtlmCredIsoRemoteOutput_Status(tvb, offset, pinfo, tree, di, drep); - offset = rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvb, offset, pinfo, tree, di, drep, &CallId); + offset = rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvb, offset, pinfo, tree, di, drep, CallId); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { @@ -749,7 +750,7 @@ rcg_dissect_struct_NtlmCredIsoRemoteInput(tvbuff_t *tvb _U_, int offset _U_, pac } offset = rcg_dissect_element_NtlmCredIsoRemoteInput_CallId(tvb, offset, pinfo, tree, di, drep, &CallId); col_set_str(pinfo->cinfo, COL_INFO, val_to_str(CallId, rcg_RemoteGuardCallId_vals, "unknown operation (%u)")); - offset = rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvb, offset, pinfo, tree, di, drep, &CallId); + offset = rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvb, offset, pinfo, tree, di, drep, CallId); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { @@ -792,7 +793,11 @@ rcg_dissect_element_KERB_ASN1_DATA_Asn1Buffer(tvbuff_t *tvb _U_, int offset _U_, static int rcg_dissect_element_KERB_ASN1_DATA_Asn1Buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_KERB_ASN1_DATA_Asn1Buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_KERB_ASN1_DATA_Asn1Buffer__); return offset; } @@ -927,7 +932,11 @@ rcg_dissect_element_KERB_RPC_OCTET_STRING_value(tvbuff_t *tvb _U_, int offset _U static int rcg_dissect_element_KERB_RPC_OCTET_STRING_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_KERB_RPC_OCTET_STRING_value__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_KERB_RPC_OCTET_STRING_value__); return offset; } @@ -1122,9 +1131,13 @@ rcg_dissect_element_RPC_UNICODE_STRING_Buffer(tvbuff_t *tvb _U_, int offset _U_, static int rcg_dissect_element_RPC_UNICODE_STRING_Buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_rcg_RPC_UNICODE_STRING_Buffer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_rcg_RPC_UNICODE_STRING_Buffer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1197,7 +1210,11 @@ rcg_dissect_element_KERB_RPC_INTERNAL_NAME_Names(tvbuff_t *tvb _U_, int offset _ static int rcg_dissect_element_KERB_RPC_INTERNAL_NAME_Names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_KERB_RPC_INTERNAL_NAME_Names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_KERB_RPC_INTERNAL_NAME_Names__); return offset; } @@ -1318,7 +1335,11 @@ rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials(tvbuff_t *tvb _U_, int static int rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_Credentials__); return offset; } @@ -1379,9 +1400,10 @@ rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_CredentialCount(tvbuff_t *tvb } static int -rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials_); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials_); return offset; } @@ -1394,13 +1416,24 @@ rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials_(tvbuff_t *tvb _U return offset; } +static int +rcg_dissect_conformant_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, struct ndr_generic_array *nga) +{ + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga); + + return offset; +} + int rcg_dissect_struct_SECPKG_SUPPLEMENTAL_CRED_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { + struct ndr_generic_array nga_Credentials = { .is_conformant = false, }; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; + offset = rcg_dissect_conformant_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvb, offset, pinfo, parent_tree, di, drep, &nga_Credentials); + ALIGN_TO_4_BYTES; old_offset = offset; @@ -1412,16 +1445,12 @@ rcg_dissect_struct_SECPKG_SUPPLEMENTAL_CRED_ARRAY(tvbuff_t *tvb _U_, int offset offset = rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_CredentialCount(tvb, offset, pinfo, tree, di, drep); - offset = rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvb, offset, pinfo, tree, di, drep); + offset = rcg_dissect_element_SECPKG_SUPPLEMENTAL_CRED_ARRAY_Credentials(tvb, offset, pinfo, tree, di, drep, &nga_Credentials); proto_item_set_len(item, offset-old_offset); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - return offset; } @@ -1479,7 +1508,11 @@ rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData(tvbuff_t *tvb _U_, int offse static int rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_KERB_RPC_CRYPTO_API_BLOB_pbData__); return offset; } @@ -2828,7 +2861,11 @@ rcg_dissect_element_PackApReplyResp_PackedReply(tvbuff_t *tvb _U_, int offset _U static int rcg_dissect_element_PackApReplyResp_PackedReply_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_PackApReplyResp_PackedReply__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_PackApReplyResp_PackedReply__); return offset; } @@ -2993,7 +3030,11 @@ rcg_dissect_element_HashS4UPreauthResp_ChecksumValue_(tvbuff_t *tvb _U_, int off static int rcg_dissect_element_HashS4UPreauthResp_ChecksumValue__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_HashS4UPreauthResp_ChecksumValue___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_HashS4UPreauthResp_ChecksumValue___); return offset; } @@ -3194,7 +3235,11 @@ rcg_dissect_element_SignS4UPreauthDataResp_ChecksumValue_(tvbuff_t *tvb _U_, int static int rcg_dissect_element_SignS4UPreauthDataResp_ChecksumValue__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_SignS4UPreauthDataResp_ChecksumValue___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_SignS4UPreauthDataResp_ChecksumValue___); return offset; } @@ -3293,7 +3338,11 @@ rcg_dissect_element_VerifyChecksumReq_ExpectedChecksum(tvbuff_t *tvb _U_, int of static int rcg_dissect_element_VerifyChecksumReq_ExpectedChecksum_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_VerifyChecksumReq_ExpectedChecksum__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_VerifyChecksumReq_ExpectedChecksum__); return offset; } @@ -3325,7 +3374,11 @@ rcg_dissect_element_VerifyChecksumReq_DataToCheck(tvbuff_t *tvb _U_, int offset static int rcg_dissect_element_VerifyChecksumReq_DataToCheck_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_VerifyChecksumReq_DataToCheck__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_VerifyChecksumReq_DataToCheck__); return offset; } @@ -3479,7 +3532,11 @@ rcg_dissect_element_DecryptPacCredentialsReq_Data(tvbuff_t *tvb _U_, int offset static int rcg_dissect_element_DecryptPacCredentialsReq_Data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_DecryptPacCredentialsReq_Data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_DecryptPacCredentialsReq_Data__); return offset; } @@ -3688,7 +3745,11 @@ rcg_dissect_element_CreateECDHKeyAgreementResp_EncodedPubKey_(tvbuff_t *tvb _U_, static int rcg_dissect_element_CreateECDHKeyAgreementResp_EncodedPubKey__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_CreateECDHKeyAgreementResp_EncodedPubKey___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_CreateECDHKeyAgreementResp_EncodedPubKey___); return offset; } @@ -3898,7 +3959,11 @@ rcg_dissect_element_CreateDHKeyAgreementResp_LittleEndianPublicKey_(tvbuff_t *tv static int rcg_dissect_element_CreateDHKeyAgreementResp_LittleEndianPublicKey__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_CreateDHKeyAgreementResp_LittleEndianPublicKey___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_CreateDHKeyAgreementResp_LittleEndianPublicKey___); return offset; } @@ -4113,7 +4178,11 @@ rcg_dissect_element_KeyAgreementGenerateNonceResp_Nonce_(tvbuff_t *tvb _U_, int static int rcg_dissect_element_KeyAgreementGenerateNonceResp_Nonce__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_KeyAgreementGenerateNonceResp_Nonce___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_KeyAgreementGenerateNonceResp_Nonce___); return offset; } @@ -4218,7 +4287,11 @@ rcg_dissect_element_FinalizeKeyAgreementReq_RemoteNonce(tvbuff_t *tvb _U_, int o static int rcg_dissect_element_FinalizeKeyAgreementReq_RemoteNonce_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_FinalizeKeyAgreementReq_RemoteNonce__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_FinalizeKeyAgreementReq_RemoteNonce__); return offset; } @@ -4250,7 +4323,11 @@ rcg_dissect_element_FinalizeKeyAgreementReq_X509PublicKey(tvbuff_t *tvb _U_, int static int rcg_dissect_element_FinalizeKeyAgreementReq_X509PublicKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_FinalizeKeyAgreementReq_X509PublicKey__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_FinalizeKeyAgreementReq_X509PublicKey__); return offset; } @@ -4531,8 +4608,9 @@ rcg_dissect_KerbInputUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_rcg_KerbInputUnion, &item, "KerbInputUnion"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case RemoteCallKerbNegotiateVersion: @@ -4627,9 +4705,9 @@ rcg_dissect_element_KerbCredIsoRemoteInput_CallId(tvbuff_t *tvb _U_, int offset } static int -rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId) +rcg_dissect_element_KerbCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId) { - offset = rcg_dissect_KerbInputUnion(tvb, offset, pinfo, tree, di, drep, hf_rcg_KerbCredIsoRemoteInput_callUnion, *CallId); + offset = rcg_dissect_KerbInputUnion(tvb, offset, pinfo, tree, di, drep, hf_rcg_KerbCredIsoRemoteInput_callUnion, CallId); return offset; } @@ -4813,8 +4891,9 @@ rcg_dissect_KerbOutputUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_rcg_KerbOutputUnion, &item, "KerbOutputUnion"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case RemoteCallKerbNegotiateVersion: @@ -4918,9 +4997,9 @@ rcg_dissect_element_KerbCredIsoRemoteOutput_Status(tvbuff_t *tvb _U_, int offset } static int -rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId) +rcg_dissect_element_KerbCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId) { - offset = rcg_dissect_KerbOutputUnion(tvb, offset, pinfo, tree, di, drep, hf_rcg_KerbCredIsoRemoteOutput_callUnion, *CallId); + offset = rcg_dissect_KerbOutputUnion(tvb, offset, pinfo, tree, di, drep, hf_rcg_KerbCredIsoRemoteOutput_callUnion, CallId); return offset; } @@ -5254,7 +5333,11 @@ rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved6(tvbuff_t *tvb _U_, static int rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved6_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved6__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_MSV1_0_REMOTE_ENCRYPTED_SECRETS_reserved6__); return offset; } @@ -5440,7 +5523,11 @@ rcg_dissect_element_Lm20GetNtlm3ChallengeResponseResp_Ntlm3Response(tvbuff_t *tv static int rcg_dissect_element_Lm20GetNtlm3ChallengeResponseResp_Ntlm3Response_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, rcg_dissect_element_Lm20GetNtlm3ChallengeResponseResp_Ntlm3Response__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, rcg_dissect_element_Lm20GetNtlm3ChallengeResponseResp_Ntlm3Response__); return offset; } @@ -5879,8 +5966,9 @@ rcg_dissect_NtlmCredInput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_rcg_NtlmCredInput, &item, "NtlmCredInput"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case RemoteCallNtlmNegotiateVersion: @@ -5923,9 +6011,9 @@ rcg_dissect_element_NtlmCredIsoRemoteInput_CallId(tvbuff_t *tvb _U_, int offset } static int -rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId) +rcg_dissect_element_NtlmCredIsoRemoteInput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId) { - offset = rcg_dissect_NtlmCredInput(tvb, offset, pinfo, tree, di, drep, hf_rcg_NtlmCredIsoRemoteInput_callUnion, *CallId); + offset = rcg_dissect_NtlmCredInput(tvb, offset, pinfo, tree, di, drep, hf_rcg_NtlmCredIsoRemoteInput_callUnion, CallId); return offset; } @@ -5992,8 +6080,9 @@ rcg_dissect_NtlmCredOutput(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_rcg_NtlmCredOutput, &item, "NtlmCredOutput"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case RemoteCallNtlmNegotiateVersion: @@ -6045,9 +6134,9 @@ rcg_dissect_element_NtlmCredIsoRemoteOutput_Status(tvbuff_t *tvb _U_, int offset } static int -rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t *CallId) +rcg_dissect_element_NtlmCredIsoRemoteOutput_callUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint16_t CallId) { - offset = rcg_dissect_NtlmCredOutput(tvb, offset, pinfo, tree, di, drep, hf_rcg_NtlmCredIsoRemoteOutput_callUnion, *CallId); + offset = rcg_dissect_NtlmCredOutput(tvb, offset, pinfo, tree, di, drep, hf_rcg_NtlmCredIsoRemoteOutput_callUnion, CallId); return offset; } diff --git a/epan/dissectors/packet-dcerpc-rfr.c b/epan/dissectors/packet-dcerpc-rfr.c index ec51eabd17..10cdf7e1c3 100644 --- a/epan/dissectors/packet-dcerpc-rfr.c +++ b/epan/dissectors/packet-dcerpc-rfr.c @@ -247,9 +247,13 @@ rfr_dissect_element_RfrGetNewDSA_pUserDN(tvbuff_t *tvb _U_, int offset _U_, pack static int rfr_dissect_element_RfrGetNewDSA_pUserDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_pUserDN, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_pUserDN, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -274,9 +278,13 @@ rfr_dissect_element_RfrGetNewDSA_ppszUnused_(tvbuff_t *tvb _U_, int offset _U_, static int rfr_dissect_element_RfrGetNewDSA_ppszUnused__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszUnused, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszUnused, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -301,9 +309,13 @@ rfr_dissect_element_RfrGetNewDSA_ppszServer_(tvbuff_t *tvb _U_, int offset _U_, static int rfr_dissect_element_RfrGetNewDSA_ppszServer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -377,9 +389,13 @@ rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvbuff_t *tvb _U_, static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -404,9 +420,13 @@ rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_(tvbuff_t *tvb _U_, in static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-samr.c b/epan/dissectors/packet-dcerpc-samr.c index 6947190627..5fb9412396 100644 --- a/epan/dissectors/packet-dcerpc-samr.c +++ b/epan/dissectors/packet-dcerpc-samr.c @@ -2046,6 +2046,7 @@ static int samr_dissect_element_ChangePasswordUser4_account(tvbuff_t *tvb _U_, i static int samr_dissect_element_ChangePasswordUser4_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int samr_dissect_element_ChangePasswordUser4_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int samr_dissect_element_ChangePasswordUser4_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); + #include "packet-dcerpc-lsa.h" static void samr_connect_specific_rights(tvbuff_t *tvb, int offset, proto_tree *tree, uint32_t access) { @@ -2309,7 +2310,11 @@ samr_dissect_element_lsa_Strings_names(tvbuff_t *tvb _U_, int offset _U_, packet static int samr_dissect_element_lsa_Strings_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_lsa_Strings_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_lsa_Strings_names__); return offset; } @@ -2591,7 +2596,11 @@ samr_dissect_element_SamArray_entries(tvbuff_t *tvb _U_, int offset _U_, packet_ static int samr_dissect_element_SamArray_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SamArray_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_SamArray_entries__); return offset; } @@ -3621,8 +3630,9 @@ samr_dissect_DomainInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_DomainInfo, &item, "samr_DomainInfo"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case 1: @@ -3703,7 +3713,11 @@ samr_dissect_element_Ids_ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin static int samr_dissect_element_Ids_ids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Ids_ids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_Ids_ids__); return offset; } @@ -4035,8 +4049,9 @@ samr_dissect_GroupInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_GroupInfo, &item, "samr_GroupInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case GROUPINFOALL: @@ -4090,7 +4105,11 @@ samr_dissect_element_RidTypeArray_rids(tvbuff_t *tvb _U_, int offset _U_, packet static int samr_dissect_element_RidTypeArray_rids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_rids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_RidTypeArray_rids__); return offset; } @@ -4114,7 +4133,11 @@ samr_dissect_element_RidTypeArray_types(tvbuff_t *tvb _U_, int offset _U_, packe static int samr_dissect_element_RidTypeArray_types_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_types__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_RidTypeArray_types__); return offset; } @@ -4289,8 +4312,9 @@ samr_dissect_AliasInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_AliasInfo, &item, "samr_AliasInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case ALIASINFOALL: @@ -4539,7 +4563,13 @@ samr_dissect_element_LogonHours_bits(tvbuff_t *tvb _U_, int offset _U_, packet_i static int samr_dissect_element_LogonHours_bits_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LogonHours_bits__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_LogonHours_bits__); return offset; } @@ -6034,7 +6064,11 @@ samr_dissect_element_UserInfo21_buffer(tvbuff_t *tvb _U_, int offset _U_, packet static int samr_dissect_element_UserInfo21_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_UserInfo21_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_UserInfo21_buffer__); return offset; } @@ -6602,7 +6636,11 @@ samr_dissect_element_EncryptedPasswordAES_cipher(tvbuff_t *tvb _U_, int offset _ static int samr_dissect_element_EncryptedPasswordAES_cipher_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EncryptedPasswordAES_cipher__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_EncryptedPasswordAES_cipher__); return offset; } @@ -7008,8 +7046,9 @@ samr_dissect_UserInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_UserInfo, &item, "samr_UserInfo"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case 1: @@ -7195,7 +7234,11 @@ samr_dissect_element_RidWithAttributeArray_rids(tvbuff_t *tvb _U_, int offset _U static int samr_dissect_element_RidWithAttributeArray_rids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidWithAttributeArray_rids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_RidWithAttributeArray_rids__); return offset; } @@ -7361,7 +7404,11 @@ samr_dissect_element_DispInfoGeneral_entries(tvbuff_t *tvb _U_, int offset _U_, static int samr_dissect_element_DispInfoGeneral_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoGeneral_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_DispInfoGeneral_entries__); return offset; } @@ -7516,7 +7563,11 @@ samr_dissect_element_DispInfoFull_entries(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_DispInfoFull_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFull_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_DispInfoFull_entries__); return offset; } @@ -7671,7 +7722,11 @@ samr_dissect_element_DispInfoFullGroups_entries(tvbuff_t *tvb _U_, int offset _U static int samr_dissect_element_DispInfoFullGroups_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFullGroups_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_DispInfoFullGroups_entries__); return offset; } @@ -7793,7 +7848,11 @@ samr_dissect_element_DispInfoAscii_entries(tvbuff_t *tvb _U_, int offset _U_, pa static int samr_dissect_element_DispInfoAscii_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoAscii_entries__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_DispInfoAscii_entries__); return offset; } @@ -7922,8 +7981,9 @@ samr_dissect_DispInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_DispInfo, &item, "samr_DispInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case SAMR_DOMAIN_DISPLAY_USER: @@ -8206,8 +8266,9 @@ samr_dissect_ConnectInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ConnectInfo, &item, "samr_ConnectInfo"); } + UNION_ALIGN_TO_4_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; + UNION_ALIGN_TO_4_BYTES; switch(level) { case 1: @@ -8336,7 +8397,11 @@ samr_dissect_element_ValidationBlob_data(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_ValidationBlob_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidationBlob_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_ValidationBlob_data__); return offset; } @@ -8450,7 +8515,11 @@ samr_dissect_element_ValidatePasswordInfo_pwd_history(tvbuff_t *tvb _U_, int off static int samr_dissect_element_ValidatePasswordInfo_pwd_history_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePasswordInfo_pwd_history__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_ValidatePasswordInfo_pwd_history__); return offset; } @@ -8601,8 +8670,9 @@ samr_dissect_ValidatePasswordRep(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ValidatePasswordRep, &item, "samr_ValidatePasswordRep"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case 1: @@ -8902,8 +8972,9 @@ samr_dissect_ValidatePasswordReq(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ValidatePasswordReq, &item, "samr_ValidatePasswordReq"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; + UNION_ALIGN_TO_8_BYTES; switch(level) { case 1: @@ -9583,8 +9654,14 @@ samr_dissect_element_QueryDomainInfo_info(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_QueryDomainInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo_info); + di->switch_level = saved_switch_level; + return offset; } @@ -10542,7 +10619,13 @@ samr_dissect_element_LookupNames_names(tvbuff_t *tvb _U_, int offset _U_, packet static int samr_dissect_element_LookupNames_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_names__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_LookupNames_names__); return offset; } @@ -10663,7 +10746,13 @@ samr_dissect_element_LookupRids_rids(tvbuff_t *tvb _U_, int offset _U_, packet_i static int samr_dissect_element_LookupRids_rids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_rids__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, samr_dissect_element_LookupRids_rids__); return offset; } @@ -10869,8 +10958,14 @@ samr_dissect_element_QueryGroupInfo_info(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_QueryGroupInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_GroupInfo)",hf_samr_samr_QueryGroupInfo_info); + di->switch_level = saved_switch_level; + return offset; } @@ -11410,8 +11505,14 @@ samr_dissect_element_QueryAliasInfo_info(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_QueryAliasInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryAliasInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_AliasInfo)",hf_samr_samr_QueryAliasInfo_info); + di->switch_level = saved_switch_level; + return offset; } @@ -11929,8 +12030,14 @@ samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, int offset _U_, packe static int samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info); + di->switch_level = saved_switch_level; + return offset; } @@ -12807,8 +12914,14 @@ samr_dissect_element_QueryDomainInfo2_info(tvbuff_t *tvb _U_, int offset _U_, pa static int samr_dissect_element_QueryDomainInfo2_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo2_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo2_info); + di->switch_level = saved_switch_level; + return offset; } @@ -12889,8 +13002,14 @@ samr_dissect_element_QueryUserInfo2_info(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_QueryUserInfo2_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo2_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo2_info); + di->switch_level = saved_switch_level; + return offset; } @@ -13914,9 +14033,13 @@ samr_dissect_element_Connect2_system_name(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_Connect2_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect2_system_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect2_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14203,9 +14326,13 @@ samr_dissect_element_Connect3_system_name(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_Connect3_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect3_system_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect3_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14291,9 +14418,13 @@ samr_dissect_element_Connect4_system_name(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_Connect4_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect4_system_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect4_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14603,9 +14734,13 @@ samr_dissect_element_Connect5_system_name(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_Connect5_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect5_system_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect5_system_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14929,8 +15064,14 @@ samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { + uint64_t saved_switch_level = di->switch_level; + + di->switch_level = 0; + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePassword_rep__, NDR_POINTER_UNIQUE, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep); + di->switch_level = saved_switch_level; + return offset; } diff --git a/epan/dissectors/packet-dcerpc-srvsvc.c b/epan/dissectors/packet-dcerpc-srvsvc.c index a9cd4930b0..f65f8d7172 100644 --- a/epan/dissectors/packet-dcerpc-srvsvc.c +++ b/epan/dissectors/packet-dcerpc-srvsvc.c @@ -962,7 +962,7 @@ static int srvsvc_dissect_element_NetCharDevCtr_ctr0_(tvbuff_t *tvb _U_, int off static int srvsvc_dissect_element_NetCharDevCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int srvsvc_dissect_element_NetCharDevQInfo0_device(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevQInfo0_device_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevQCtr0_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -989,7 +989,7 @@ static int srvsvc_dissect_element_NetCharDevQCtr_ctr0_(tvbuff_t *tvb _U_, int of static int srvsvc_dissect_element_NetCharDevQCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevQCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetCharDevQInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int srvsvc_dissect_element_NetConnInfo0_conn_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetConnCtr0_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetConnCtr0_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1013,7 +1013,7 @@ static int srvsvc_dissect_element_NetConnCtr_ctr0_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetConnCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetConnCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetConnInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetConnInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetConnInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int srvsvc_dissect_element_NetFileInfo2_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetFileCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetFileCtr2_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1039,7 +1039,7 @@ static int srvsvc_dissect_element_NetFileCtr_ctr2_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetFileCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetFileCtr_ctr3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetFileInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetFileInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetFileInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int srvsvc_dissect_element_NetSessInfo0_client(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetSessInfo0_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetSessCtr0_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1117,7 +1117,7 @@ static int srvsvc_dissect_element_NetSessCtr_ctr10_(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetSessCtr_ctr502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetSessCtr_ctr502_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetSessInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetSessInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetSessInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); const value_string srvsvc_srvsvc_ShareType_vals[] = { { STYPE_DISKTREE, "STYPE_DISKTREE" }, { STYPE_DISKTREE_TEMPORARY, "STYPE_DISKTREE_TEMPORARY" }, @@ -1320,7 +1320,7 @@ static int srvsvc_dissect_element_NetShareCtr_ctr1007_(tvbuff_t *tvb _U_, int of static int srvsvc_dissect_element_NetShareCtr_ctr1501(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetShareCtr_ctr1501_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetShareInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); const value_string srvsvc_srvsvc_PlatformId_vals[] = { { PLATFORM_ID_DOS, "PLATFORM_ID_DOS" }, { PLATFORM_ID_OS2, "PLATFORM_ID_OS2" }, @@ -1809,7 +1809,7 @@ static int srvsvc_dissect_element_NetTransportCtr_ctr2_(tvbuff_t *tvb _U_, int o static int srvsvc_dissect_element_NetTransportCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetTransportCtr_ctr3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetTransportInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int srvsvc_dissect_element_NetRemoteTODInfo_elapsed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetRemoteTODInfo_msecs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int srvsvc_dissect_element_NetRemoteTODInfo_hours(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -2116,10 +2116,10 @@ static int srvsvc_dissect_element_NetServerSetServiceBitsEx_updateimmediately(tv static int srvsvc_dissect_NetShareCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); static int -srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { ALIGN_TO_5_BYTES - offset = srvsvc_dissect_NetShareCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetShareCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfoCtr_ctr, level); return offset; } static int @@ -2255,9 +2255,13 @@ srvsvc_dissect_element_NetCharDevInfo0_device(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetCharDevInfo0_device_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo0_device, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo0_device, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2317,7 +2321,11 @@ srvsvc_dissect_element_NetCharDevCtr0_array(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetCharDevCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetCharDevCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetCharDevCtr0_array__); return offset; } @@ -2380,9 +2388,13 @@ srvsvc_dissect_element_NetCharDevInfo1_device(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetCharDevInfo1_device_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo1_device, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo1_device, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2407,9 +2419,13 @@ srvsvc_dissect_element_NetCharDevInfo1_user(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetCharDevInfo1_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo1_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevInfo1_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2483,7 +2499,11 @@ srvsvc_dissect_element_NetCharDevCtr1_array(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetCharDevCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetCharDevCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetCharDevCtr1_array__); return offset; } @@ -2579,8 +2599,9 @@ srvsvc_dissect_NetCharDevInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetCharDevInfo, &item, "srvsvc_NetCharDevInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -2651,8 +2672,9 @@ srvsvc_dissect_NetCharDevCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetCharDevCtr, &item, "srvsvc_NetCharDevCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -2686,9 +2708,9 @@ srvsvc_dissect_element_NetCharDevInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_ } static int -srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetCharDevCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetCharDevInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetCharDevCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetCharDevInfoCtr_ctr, level); return offset; } @@ -2712,7 +2734,7 @@ srvsvc_dissect_struct_NetCharDevInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packe offset = srvsvc_dissect_element_NetCharDevInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetCharDevInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -2741,9 +2763,13 @@ srvsvc_dissect_element_NetCharDevQInfo0_device(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetCharDevQInfo0_device_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo0_device, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo0_device, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2803,7 +2829,11 @@ srvsvc_dissect_element_NetCharDevQCtr0_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetCharDevQCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetCharDevQCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetCharDevQCtr0_array__); return offset; } @@ -2867,9 +2897,13 @@ srvsvc_dissect_element_NetCharDevQInfo1_device(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetCharDevQInfo1_device_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo1_device, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo1_device, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2894,9 +2928,13 @@ srvsvc_dissect_element_NetCharDevQInfo1_devices(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetCharDevQInfo1_devices_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo1_devices, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQInfo1_devices, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2980,7 +3018,11 @@ srvsvc_dissect_element_NetCharDevQCtr1_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetCharDevQCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetCharDevQCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetCharDevQCtr1_array__); return offset; } @@ -3076,8 +3118,9 @@ srvsvc_dissect_NetCharDevQInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *p tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetCharDevQInfo, &item, "srvsvc_NetCharDevQInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -3148,8 +3191,9 @@ srvsvc_dissect_NetCharDevQCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetCharDevQCtr, &item, "srvsvc_NetCharDevQCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -3183,9 +3227,9 @@ srvsvc_dissect_element_NetCharDevQInfoCtr_level(tvbuff_t *tvb _U_, int offset _U } static int -srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetCharDevQCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetCharDevQInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetCharDevQCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetCharDevQInfoCtr_ctr, level); return offset; } @@ -3209,7 +3253,7 @@ srvsvc_dissect_struct_NetCharDevQInfoCtr(tvbuff_t *tvb _U_, int offset _U_, pack offset = srvsvc_dissect_element_NetCharDevQInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetCharDevQInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -3289,7 +3333,11 @@ srvsvc_dissect_element_NetConnCtr0_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetConnCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetConnCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetConnCtr0_array__); return offset; } @@ -3395,9 +3443,13 @@ srvsvc_dissect_element_NetConnInfo1_user(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetConnInfo1_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnInfo1_user, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnInfo1_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3414,9 +3466,13 @@ srvsvc_dissect_element_NetConnInfo1_share(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetConnInfo1_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnInfo1_share, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnInfo1_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3488,7 +3544,11 @@ srvsvc_dissect_element_NetConnCtr1_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetConnCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetConnCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetConnCtr1_array__); return offset; } @@ -3584,8 +3644,9 @@ srvsvc_dissect_NetConnCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetConnCtr, &item, "srvsvc_NetConnCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -3619,9 +3680,9 @@ srvsvc_dissect_element_NetConnInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, p } static int -srvsvc_dissect_element_NetConnInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetConnInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetConnCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetConnInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetConnCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetConnInfoCtr_ctr, level); return offset; } @@ -3645,7 +3706,7 @@ srvsvc_dissect_struct_NetConnInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = srvsvc_dissect_element_NetConnInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetConnInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetConnInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -3725,7 +3786,11 @@ srvsvc_dissect_element_NetFileCtr2_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetFileCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetFileCtr2_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetFileCtr2_array__); return offset; } @@ -3813,9 +3878,13 @@ srvsvc_dissect_element_NetFileInfo3_path(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetFileInfo3_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileInfo3_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileInfo3_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3832,9 +3901,13 @@ srvsvc_dissect_element_NetFileInfo3_user(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetFileInfo3_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileInfo3_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileInfo3_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3902,7 +3975,11 @@ srvsvc_dissect_element_NetFileCtr3_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetFileCtr3_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetFileCtr3_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetFileCtr3_array__); return offset; } @@ -3998,8 +4075,9 @@ srvsvc_dissect_NetFileInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetFileInfo, &item, "srvsvc_NetFileInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 2: @@ -4070,8 +4148,9 @@ srvsvc_dissect_NetFileCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetFileCtr, &item, "srvsvc_NetFileCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 2: @@ -4105,9 +4184,9 @@ srvsvc_dissect_element_NetFileInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, p } static int -srvsvc_dissect_element_NetFileInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetFileInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetFileCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetFileInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetFileCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetFileInfoCtr_ctr, level); return offset; } @@ -4131,7 +4210,7 @@ srvsvc_dissect_struct_NetFileInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = srvsvc_dissect_element_NetFileInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetFileInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetFileInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -4160,9 +4239,13 @@ srvsvc_dissect_element_NetSessInfo0_client(tvbuff_t *tvb _U_, int offset _U_, pa static int srvsvc_dissect_element_NetSessInfo0_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo0_client, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo0_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4222,7 +4305,11 @@ srvsvc_dissect_element_NetSessCtr0_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetSessCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetSessCtr0_array__); return offset; } @@ -4287,9 +4374,13 @@ srvsvc_dissect_element_NetSessInfo1_client(tvbuff_t *tvb _U_, int offset _U_, pa static int srvsvc_dissect_element_NetSessInfo1_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo1_client, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo1_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4306,9 +4397,13 @@ srvsvc_dissect_element_NetSessInfo1_user(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessInfo1_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo1_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo1_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4410,7 +4505,11 @@ srvsvc_dissect_element_NetSessCtr1_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetSessCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetSessCtr1_array__); return offset; } @@ -4476,9 +4575,13 @@ srvsvc_dissect_element_NetSessInfo2_client(tvbuff_t *tvb _U_, int offset _U_, pa static int srvsvc_dissect_element_NetSessInfo2_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_client, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4495,9 +4598,13 @@ srvsvc_dissect_element_NetSessInfo2_user(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessInfo2_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_user, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4546,9 +4653,13 @@ srvsvc_dissect_element_NetSessInfo2_client_type(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetSessInfo2_client_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_client_type, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo2_client_type, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4620,7 +4731,11 @@ srvsvc_dissect_element_NetSessCtr2_array(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetSessCtr2_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetSessCtr2_array__); return offset; } @@ -4683,9 +4798,13 @@ srvsvc_dissect_element_NetSessInfo10_client(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetSessInfo10_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo10_client, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo10_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4702,9 +4821,13 @@ srvsvc_dissect_element_NetSessInfo10_user(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetSessInfo10_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo10_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo10_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4786,7 +4909,11 @@ srvsvc_dissect_element_NetSessCtr10_array(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetSessCtr10_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetSessCtr10_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetSessCtr10_array__); return offset; } @@ -4853,9 +4980,13 @@ srvsvc_dissect_element_NetSessInfo502_client(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSessInfo502_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_client, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4872,9 +5003,13 @@ srvsvc_dissect_element_NetSessInfo502_user(tvbuff_t *tvb _U_, int offset _U_, pa static int srvsvc_dissect_element_NetSessInfo502_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_user, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4923,9 +5058,13 @@ srvsvc_dissect_element_NetSessInfo502_client_type(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSessInfo502_client_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_client_type, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_client_type, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4942,9 +5081,13 @@ srvsvc_dissect_element_NetSessInfo502_transport(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetSessInfo502_transport_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_transport, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessInfo502_transport, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5018,7 +5161,11 @@ srvsvc_dissect_element_NetSessCtr502_array(tvbuff_t *tvb _U_, int offset _U_, pa static int srvsvc_dissect_element_NetSessCtr502_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetSessCtr502_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetSessCtr502_array__); return offset; } @@ -5187,8 +5334,9 @@ srvsvc_dissect_NetSessCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetSessCtr, &item, "srvsvc_NetSessCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -5231,9 +5379,9 @@ srvsvc_dissect_element_NetSessInfoCtr_level(tvbuff_t *tvb _U_, int offset _U_, p } static int -srvsvc_dissect_element_NetSessInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetSessInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetSessCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSessInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetSessCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSessInfoCtr_ctr, level); return offset; } @@ -5257,7 +5405,7 @@ srvsvc_dissect_struct_NetSessInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_i offset = srvsvc_dissect_element_NetSessInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - ALIGN_TO_5_BYTES; offset = srvsvc_dissect_element_NetSessInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + ALIGN_TO_5_BYTES; offset = srvsvc_dissect_element_NetSessInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -5325,9 +5473,13 @@ srvsvc_dissect_element_NetShareInfo0_name(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareInfo0_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo0_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo0_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5387,7 +5539,11 @@ srvsvc_dissect_element_NetShareCtr0_array(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr0_array__); return offset; } @@ -5449,9 +5605,13 @@ srvsvc_dissect_element_NetShareInfo1_name(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareInfo1_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5476,9 +5636,13 @@ srvsvc_dissect_element_NetShareInfo1_comment(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareInfo1_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5542,7 +5706,11 @@ srvsvc_dissect_element_NetShareCtr1_array(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1_array__); return offset; } @@ -5609,9 +5777,13 @@ srvsvc_dissect_element_NetShareInfo2_name(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareInfo2_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5636,9 +5808,13 @@ srvsvc_dissect_element_NetShareInfo2_comment(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareInfo2_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5679,9 +5855,13 @@ srvsvc_dissect_element_NetShareInfo2_path(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareInfo2_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5698,9 +5878,13 @@ srvsvc_dissect_element_NetShareInfo2_password(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareInfo2_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo2_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5774,7 +5958,11 @@ srvsvc_dissect_element_NetShareCtr2_array(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetShareCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr2_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr2_array__); return offset; } @@ -5837,9 +6025,13 @@ srvsvc_dissect_element_NetShareInfo501_name(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetShareInfo501_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo501_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo501_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5864,9 +6056,13 @@ srvsvc_dissect_element_NetShareInfo501_comment(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetShareInfo501_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo501_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo501_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5940,7 +6136,11 @@ srvsvc_dissect_element_NetShareCtr501_array(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetShareCtr501_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr501_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr501_array__); return offset; } @@ -6008,9 +6208,13 @@ srvsvc_dissect_element_NetShareInfo502_name(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetShareInfo502_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6035,9 +6239,13 @@ srvsvc_dissect_element_NetShareInfo502_comment(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetShareInfo502_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6078,9 +6286,13 @@ srvsvc_dissect_element_NetShareInfo502_path(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetShareInfo502_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6097,9 +6309,13 @@ srvsvc_dissect_element_NetShareInfo502_password(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetShareInfo502_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo502_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6175,7 +6391,11 @@ srvsvc_dissect_element_NetShareCtr502_array(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetShareCtr502_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr502_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr502_array__); return offset; } @@ -6235,9 +6455,13 @@ srvsvc_dissect_element_NetShareInfo1004_comment(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetShareInfo1004_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1004_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1004_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6297,7 +6521,11 @@ srvsvc_dissect_element_NetShareCtr1004_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareCtr1004_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1004_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1004_array__); return offset; } @@ -6464,7 +6692,11 @@ srvsvc_dissect_element_NetShareCtr1005_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareCtr1005_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1005_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1005_array__); return offset; } @@ -6575,7 +6807,11 @@ srvsvc_dissect_element_NetShareCtr1006_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareCtr1006_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1006_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1006_array__); return offset; } @@ -6644,9 +6880,13 @@ srvsvc_dissect_element_NetShareInfo1007_alternate_directory_name(tvbuff_t *tvb _ static int srvsvc_dissect_element_NetShareInfo1007_alternate_directory_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1007_alternate_directory_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareInfo1007_alternate_directory_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6708,7 +6948,11 @@ srvsvc_dissect_element_NetShareCtr1007_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareCtr1007_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1007_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1007_array__); return offset; } @@ -6777,7 +7021,11 @@ srvsvc_dissect_element_NetShareCtr1501_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareCtr1501_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetShareCtr1501_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetShareCtr1501_array__); return offset; } @@ -6993,8 +7241,9 @@ srvsvc_dissect_NetShareInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetShareInfo, &item, "srvsvc_NetShareInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -7233,8 +7482,9 @@ srvsvc_dissect_NetShareCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetShareCtr, &item, "srvsvc_NetShareCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -7318,7 +7568,7 @@ srvsvc_dissect_struct_NetShareInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = srvsvc_dissect_element_NetShareInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetShareInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetShareInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -7379,9 +7629,13 @@ srvsvc_dissect_element_NetSrvInfo100_server_name(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetSrvInfo100_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo100_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo100_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7447,9 +7701,13 @@ srvsvc_dissect_element_NetSrvInfo101_server_name(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetSrvInfo101_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo101_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo101_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7482,9 +7740,13 @@ srvsvc_dissect_element_NetSrvInfo101_comment(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSrvInfo101_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo101_comment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo101_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7565,9 +7827,13 @@ srvsvc_dissect_element_NetSrvInfo102_server_name(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetSrvInfo102_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7600,9 +7866,13 @@ srvsvc_dissect_element_NetSrvInfo102_comment(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSrvInfo102_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7667,9 +7937,13 @@ srvsvc_dissect_element_NetSrvInfo102_userpath(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSrvInfo102_userpath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_userpath, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo102_userpath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7798,9 +8072,13 @@ srvsvc_dissect_element_NetSrvInfo402_alerts(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetSrvInfo402_alerts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_alerts, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_alerts, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7841,9 +8119,13 @@ srvsvc_dissect_element_NetSrvInfo402_guestaccount(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSrvInfo402_guestaccount_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_guestaccount, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_guestaccount, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8036,9 +8318,13 @@ srvsvc_dissect_element_NetSrvInfo402_srvheuristics(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSrvInfo402_srvheuristics_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_srvheuristics, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo402_srvheuristics, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8206,9 +8492,13 @@ srvsvc_dissect_element_NetSrvInfo403_alerts(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetSrvInfo403_alerts_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_alerts, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_alerts, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8249,9 +8539,13 @@ srvsvc_dissect_element_NetSrvInfo403_guestaccount(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSrvInfo403_guestaccount_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_guestaccount, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_guestaccount, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8444,9 +8738,13 @@ srvsvc_dissect_element_NetSrvInfo403_srvheuristics(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSrvInfo403_srvheuristics_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_srvheuristics, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_srvheuristics, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8479,9 +8777,13 @@ srvsvc_dissect_element_NetSrvInfo403_autopath(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSrvInfo403_autopath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_autopath, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo403_autopath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9012,9 +9314,13 @@ srvsvc_dissect_element_NetSrvInfo503_domain(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetSrvInfo503_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo503_domain, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo503_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9529,9 +9835,13 @@ srvsvc_dissect_element_NetSrvInfo599_domain(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetSrvInfo599_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo599_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo599_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9978,9 +10288,13 @@ srvsvc_dissect_element_NetSrvInfo1005_comment(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSrvInfo1005_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo1005_comment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvInfo1005_comment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13136,8 +13450,9 @@ srvsvc_dissect_NetSrvInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetSrvInfo, &item, "srvsvc_NetSrvInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 100: @@ -13392,9 +13707,11 @@ srvsvc_dissect_NetSrvInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo static int srvsvc_dissect_element_NetDiskInfo0_disk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_vstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetDiskInfo0_disk, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetDiskInfo0_disk, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13454,7 +13771,13 @@ srvsvc_dissect_element_NetDiskInfo_disks(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetDiskInfo_disks_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetDiskInfo_disks__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetDiskInfo_disks__); return offset; } @@ -13744,9 +14067,13 @@ srvsvc_dissect_element_NetTransportInfo0_name(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo0_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo0_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo0_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13763,7 +14090,11 @@ srvsvc_dissect_element_NetTransportInfo0_addr(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo0_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportInfo0_addr__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportInfo0_addr__); return offset; } @@ -13795,9 +14126,13 @@ srvsvc_dissect_element_NetTransportInfo0_net_addr(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportInfo0_net_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo0_net_addr, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo0_net_addr, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13865,7 +14200,11 @@ srvsvc_dissect_element_NetTransportCtr0_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportCtr0_array__); return offset; } @@ -13938,9 +14277,13 @@ srvsvc_dissect_element_NetTransportInfo1_name(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo1_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -13957,7 +14300,11 @@ srvsvc_dissect_element_NetTransportInfo1_addr(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo1_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportInfo1_addr__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportInfo1_addr__); return offset; } @@ -13989,9 +14336,13 @@ srvsvc_dissect_element_NetTransportInfo1_net_addr(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportInfo1_net_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_net_addr, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_net_addr, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14008,9 +14359,13 @@ srvsvc_dissect_element_NetTransportInfo1_domain(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetTransportInfo1_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo1_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14080,7 +14435,11 @@ srvsvc_dissect_element_NetTransportCtr1_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportCtr1_array__); return offset; } @@ -14154,9 +14513,13 @@ srvsvc_dissect_element_NetTransportInfo2_name(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo2_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14173,7 +14536,11 @@ srvsvc_dissect_element_NetTransportInfo2_addr(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo2_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportInfo2_addr__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportInfo2_addr__); return offset; } @@ -14205,9 +14572,13 @@ srvsvc_dissect_element_NetTransportInfo2_net_addr(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportInfo2_net_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_net_addr, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_net_addr, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14224,9 +14595,13 @@ srvsvc_dissect_element_NetTransportInfo2_domain(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetTransportInfo2_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo2_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14306,7 +14681,11 @@ srvsvc_dissect_element_NetTransportCtr2_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportCtr2_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportCtr2_array__); return offset; } @@ -14382,9 +14761,13 @@ srvsvc_dissect_element_NetTransportInfo3_name(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo3_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14401,7 +14784,11 @@ srvsvc_dissect_element_NetTransportInfo3_addr(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportInfo3_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportInfo3_addr__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportInfo3_addr__); return offset; } @@ -14433,9 +14820,13 @@ srvsvc_dissect_element_NetTransportInfo3_net_addr(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportInfo3_net_addr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_net_addr, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_net_addr, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14452,9 +14843,13 @@ srvsvc_dissect_element_NetTransportInfo3_domain(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetTransportInfo3_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportInfo3_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -14564,7 +14959,11 @@ srvsvc_dissect_element_NetTransportCtr3_array(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetTransportCtr3_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetTransportCtr3_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetTransportCtr3_array__); return offset; } @@ -14694,8 +15093,9 @@ srvsvc_dissect_NetTransportCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *p tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetTransportCtr, &item, "srvsvc_NetTransportCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -14737,9 +15137,9 @@ srvsvc_dissect_element_NetTransportInfoCtr_level(tvbuff_t *tvb _U_, int offset _ } static int -srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = srvsvc_dissect_NetTransportCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetTransportInfoCtr_ctr, *level); + offset = srvsvc_dissect_NetTransportCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetTransportInfoCtr_ctr, level); return offset; } @@ -14763,7 +15163,7 @@ srvsvc_dissect_struct_NetTransportInfoCtr(tvbuff_t *tvb _U_, int offset _U_, pac offset = srvsvc_dissect_element_NetTransportInfoCtr_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = srvsvc_dissect_element_NetTransportInfoCtr_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -14992,8 +15392,9 @@ srvsvc_dissect_NetTransportInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info * tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_srvsvc_srvsvc_NetTransportInfo, &item, "srvsvc_NetTransportInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -15028,9 +15429,13 @@ srvsvc_dissect_element_NetCharDevEnum_server_unc(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetCharDevEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevEnum_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15149,9 +15554,13 @@ srvsvc_dissect_element_NetCharDevGetInfo_server_unc(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetCharDevGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevGetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevGetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15160,9 +15569,13 @@ srvsvc_dissect_element_NetCharDevGetInfo_server_unc_(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetCharDevGetInfo_device_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevGetInfo_device_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevGetInfo_device_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15240,9 +15653,13 @@ srvsvc_dissect_element_NetCharDevControl_server_unc(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetCharDevControl_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevControl_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevControl_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15251,9 +15668,13 @@ srvsvc_dissect_element_NetCharDevControl_server_unc_(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetCharDevControl_device_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevControl_device_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevControl_device_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15311,9 +15732,13 @@ srvsvc_dissect_element_NetCharDevQEnum_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetCharDevQEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQEnum_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15330,9 +15755,13 @@ srvsvc_dissect_element_NetCharDevQEnum_user(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetCharDevQEnum_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQEnum_user, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQEnum_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15454,9 +15883,13 @@ srvsvc_dissect_element_NetCharDevQGetInfo_server_unc(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetCharDevQGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15465,9 +15898,13 @@ srvsvc_dissect_element_NetCharDevQGetInfo_server_unc_(tvbuff_t *tvb _U_, int off static int srvsvc_dissect_element_NetCharDevQGetInfo_queue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_queue_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_queue_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15476,9 +15913,13 @@ srvsvc_dissect_element_NetCharDevQGetInfo_queue_name(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetCharDevQGetInfo_user(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQGetInfo_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15559,9 +16000,13 @@ srvsvc_dissect_element_NetCharDevQSetInfo_server_unc(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetCharDevQSetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQSetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQSetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15570,9 +16015,13 @@ srvsvc_dissect_element_NetCharDevQSetInfo_server_unc_(tvbuff_t *tvb _U_, int off static int srvsvc_dissect_element_NetCharDevQSetInfo_queue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQSetInfo_queue_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQSetInfo_queue_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15663,9 +16112,13 @@ srvsvc_dissect_element_NetCharDevQPurge_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetCharDevQPurge_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurge_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurge_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15674,9 +16127,13 @@ srvsvc_dissect_element_NetCharDevQPurge_server_unc_(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetCharDevQPurge_queue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurge_queue_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurge_queue_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15723,9 +16180,13 @@ srvsvc_dissect_element_NetCharDevQPurgeSelf_server_unc(tvbuff_t *tvb _U_, int of static int srvsvc_dissect_element_NetCharDevQPurgeSelf_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15734,9 +16195,13 @@ srvsvc_dissect_element_NetCharDevQPurgeSelf_server_unc_(tvbuff_t *tvb _U_, int o static int srvsvc_dissect_element_NetCharDevQPurgeSelf_queue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_queue_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_queue_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15745,9 +16210,13 @@ srvsvc_dissect_element_NetCharDevQPurgeSelf_queue_name(tvbuff_t *tvb _U_, int of static int srvsvc_dissect_element_NetCharDevQPurgeSelf_computer_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_computer_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetCharDevQPurgeSelf_computer_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15797,9 +16266,13 @@ srvsvc_dissect_element_NetConnEnum_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetConnEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnEnum_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15816,9 +16289,13 @@ srvsvc_dissect_element_NetConnEnum_path(tvbuff_t *tvb _U_, int offset _U_, packe static int srvsvc_dissect_element_NetConnEnum_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnEnum_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetConnEnum_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15940,9 +16417,13 @@ srvsvc_dissect_element_NetFileEnum_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetFileEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15959,9 +16440,13 @@ srvsvc_dissect_element_NetFileEnum_path(tvbuff_t *tvb _U_, int offset _U_, packe static int srvsvc_dissect_element_NetFileEnum_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -15978,9 +16463,13 @@ srvsvc_dissect_element_NetFileEnum_user(tvbuff_t *tvb _U_, int offset _U_, packe static int srvsvc_dissect_element_NetFileEnum_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileEnum_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16105,9 +16594,13 @@ srvsvc_dissect_element_NetFileGetInfo_server_unc(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetFileGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileGetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileGetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16193,9 +16686,13 @@ srvsvc_dissect_element_NetFileClose_server_unc(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetFileClose_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileClose_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetFileClose_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16250,9 +16747,13 @@ srvsvc_dissect_element_NetSessEnum_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSessEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16269,9 +16770,13 @@ srvsvc_dissect_element_NetSessEnum_client(tvbuff_t *tvb _U_, int offset _U_, pac static int srvsvc_dissect_element_NetSessEnum_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_client, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16288,9 +16793,13 @@ srvsvc_dissect_element_NetSessEnum_user(tvbuff_t *tvb _U_, int offset _U_, packe static int srvsvc_dissect_element_NetSessEnum_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_user, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessEnum_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16415,9 +16924,13 @@ srvsvc_dissect_element_NetSessDel_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetSessDel_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16434,9 +16947,13 @@ srvsvc_dissect_element_NetSessDel_client(tvbuff_t *tvb _U_, int offset _U_, pack static int srvsvc_dissect_element_NetSessDel_client_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_client, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_client, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16453,9 +16970,13 @@ srvsvc_dissect_element_NetSessDel_user(tvbuff_t *tvb _U_, int offset _U_, packet static int srvsvc_dissect_element_NetSessDel_user_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_user, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSessDel_user, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16505,9 +17026,13 @@ srvsvc_dissect_element_NetShareAdd_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareAdd_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareAdd_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareAdd_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16603,9 +17128,13 @@ srvsvc_dissect_element_NetShareEnumAll_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareEnumAll_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareEnumAll_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareEnumAll_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16724,9 +17253,13 @@ srvsvc_dissect_element_NetShareGetInfo_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareGetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareGetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16735,9 +17268,13 @@ srvsvc_dissect_element_NetShareGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareGetInfo_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareGetInfo_share_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareGetInfo_share_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16815,9 +17352,13 @@ srvsvc_dissect_element_NetShareSetInfo_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareSetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareSetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareSetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16826,9 +17367,13 @@ srvsvc_dissect_element_NetShareSetInfo_server_unc_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareSetInfo_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareSetInfo_share_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareSetInfo_share_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16927,9 +17472,13 @@ srvsvc_dissect_element_NetShareDel_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareDel_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDel_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDel_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16938,9 +17487,13 @@ srvsvc_dissect_element_NetShareDel_server_unc_(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetShareDel_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDel_share_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDel_share_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -16998,9 +17551,13 @@ srvsvc_dissect_element_NetShareDelSticky_server_unc(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetShareDelSticky_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelSticky_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelSticky_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17009,9 +17566,13 @@ srvsvc_dissect_element_NetShareDelSticky_server_unc_(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetShareDelSticky_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelSticky_share_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelSticky_share_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17069,9 +17630,13 @@ srvsvc_dissect_element_NetShareCheck_server_unc(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetShareCheck_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareCheck_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareCheck_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17080,9 +17645,13 @@ srvsvc_dissect_element_NetShareCheck_server_unc_(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetShareCheck_device_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareCheck_device_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareCheck_device_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17149,9 +17718,13 @@ srvsvc_dissect_element_NetSrvGetInfo_server_unc(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetSrvGetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvGetInfo_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvGetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17226,9 +17799,13 @@ srvsvc_dissect_element_NetSrvSetInfo_server_unc(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetSrvSetInfo_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvSetInfo_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSrvSetInfo_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17324,9 +17901,13 @@ srvsvc_dissect_element_NetDiskEnum_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetDiskEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetDiskEnum_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetDiskEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17456,9 +18037,13 @@ srvsvc_dissect_element_NetServerStatisticsGet_server_unc(tvbuff_t *tvb _U_, int static int srvsvc_dissect_element_NetServerStatisticsGet_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerStatisticsGet_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerStatisticsGet_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17475,9 +18060,13 @@ srvsvc_dissect_element_NetServerStatisticsGet_service(tvbuff_t *tvb _U_, int off static int srvsvc_dissect_element_NetServerStatisticsGet_service_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerStatisticsGet_service, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerStatisticsGet_service, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17574,9 +18163,13 @@ srvsvc_dissect_element_NetTransportAdd_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportAdd_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportAdd_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportAdd_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17642,9 +18235,13 @@ srvsvc_dissect_element_NetTransportEnum_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportEnum_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17763,9 +18360,13 @@ srvsvc_dissect_element_NetTransportDel_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetTransportDel_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportDel_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetTransportDel_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17839,9 +18440,13 @@ srvsvc_dissect_element_NetRemoteTOD_server_unc(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetRemoteTOD_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetRemoteTOD_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetRemoteTOD_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17913,9 +18518,13 @@ srvsvc_dissect_element_NetSetServiceBits_server_unc(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetSetServiceBits_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetServiceBits_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetServiceBits_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -17932,9 +18541,13 @@ srvsvc_dissect_element_NetSetServiceBits_transport(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetSetServiceBits_transport_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetServiceBits_transport, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetServiceBits_transport, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18003,9 +18616,13 @@ srvsvc_dissect_element_NetPathType_server_unc(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetPathType_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathType_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathType_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18014,9 +18631,13 @@ srvsvc_dissect_element_NetPathType_server_unc_(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetPathType_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathType_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathType_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18094,9 +18715,13 @@ srvsvc_dissect_element_NetPathCanonicalize_server_unc(tvbuff_t *tvb _U_, int off static int srvsvc_dissect_element_NetPathCanonicalize_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18105,9 +18730,13 @@ srvsvc_dissect_element_NetPathCanonicalize_server_unc_(tvbuff_t *tvb _U_, int of static int srvsvc_dissect_element_NetPathCanonicalize_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18116,7 +18745,11 @@ srvsvc_dissect_element_NetPathCanonicalize_path(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetPathCanonicalize_can_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, srvsvc_dissect_element_NetPathCanonicalize_can_path_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, srvsvc_dissect_element_NetPathCanonicalize_can_path_); return offset; } @@ -18140,9 +18773,13 @@ srvsvc_dissect_element_NetPathCanonicalize_maxbuf(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetPathCanonicalize_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_prefix, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCanonicalize_prefix, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18232,9 +18869,13 @@ srvsvc_dissect_element_NetPathCompare_server_unc(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetPathCompare_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18243,9 +18884,13 @@ srvsvc_dissect_element_NetPathCompare_server_unc_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetPathCompare_path1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_path1, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_path1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18254,9 +18899,13 @@ srvsvc_dissect_element_NetPathCompare_path1(tvbuff_t *tvb _U_, int offset _U_, p static int srvsvc_dissect_element_NetPathCompare_path2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_path2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPathCompare_path2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18328,9 +18977,13 @@ srvsvc_dissect_element_NetNameValidate_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetNameValidate_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetNameValidate_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetNameValidate_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18339,9 +18992,13 @@ srvsvc_dissect_element_NetNameValidate_server_unc_(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetNameValidate_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetNameValidate_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetNameValidate_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18435,9 +19092,13 @@ srvsvc_dissect_element_NetPRNameCompare_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetPRNameCompare_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18446,9 +19107,13 @@ srvsvc_dissect_element_NetPRNameCompare_server_unc_(tvbuff_t *tvb _U_, int offse static int srvsvc_dissect_element_NetPRNameCompare_name1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_name1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_name1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18457,9 +19122,13 @@ srvsvc_dissect_element_NetPRNameCompare_name1(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetPRNameCompare_name2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_name2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetPRNameCompare_name2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18531,9 +19200,13 @@ srvsvc_dissect_element_NetShareEnum_server_unc(tvbuff_t *tvb _U_, int offset _U_ static int srvsvc_dissect_element_NetShareEnum_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareEnum_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareEnum_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18652,9 +19325,13 @@ srvsvc_dissect_element_NetShareDelStart_server_unc(tvbuff_t *tvb _U_, int offset static int srvsvc_dissect_element_NetShareDelStart_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelStart_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelStart_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18671,9 +19348,13 @@ srvsvc_dissect_element_NetShareDelStart_share(tvbuff_t *tvb _U_, int offset _U_, static int srvsvc_dissect_element_NetShareDelStart_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelStart_share, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetShareDelStart_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18797,9 +19478,13 @@ srvsvc_dissect_element_NetGetFileSecurity_server_unc(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetGetFileSecurity_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18816,9 +19501,13 @@ srvsvc_dissect_element_NetGetFileSecurity_share(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetGetFileSecurity_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_share, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18827,9 +19516,13 @@ srvsvc_dissect_element_NetGetFileSecurity_share_(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetGetFileSecurity_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_file, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetGetFileSecurity_file, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18894,9 +19587,13 @@ srvsvc_dissect_element_NetSetFileSecurity_server_unc(tvbuff_t *tvb _U_, int offs static int srvsvc_dissect_element_NetSetFileSecurity_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18913,9 +19610,13 @@ srvsvc_dissect_element_NetSetFileSecurity_share(tvbuff_t *tvb _U_, int offset _U static int srvsvc_dissect_element_NetSetFileSecurity_share_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_share, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_share, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18924,9 +19625,13 @@ srvsvc_dissect_element_NetSetFileSecurity_share_(tvbuff_t *tvb _U_, int offset _ static int srvsvc_dissect_element_NetSetFileSecurity_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_file, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetSetFileSecurity_file, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -18982,9 +19687,13 @@ srvsvc_dissect_element_NetServerTransportAddEx_server_unc(tvbuff_t *tvb _U_, int static int srvsvc_dissect_element_NetServerTransportAddEx_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerTransportAddEx_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerTransportAddEx_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -19050,9 +19759,13 @@ srvsvc_dissect_element_NetServerSetServiceBitsEx_server_unc(tvbuff_t *tvb _U_, i static int srvsvc_dissect_element_NetServerSetServiceBitsEx_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_server_unc, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -19069,9 +19782,13 @@ srvsvc_dissect_element_NetServerSetServiceBitsEx_emulated_server_unc(tvbuff_t *t static int srvsvc_dissect_element_NetServerSetServiceBitsEx_emulated_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_emulated_server_unc, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_emulated_server_unc, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -19088,9 +19805,13 @@ srvsvc_dissect_element_NetServerSetServiceBitsEx_transport(tvbuff_t *tvb _U_, in static int srvsvc_dissect_element_NetServerSetServiceBitsEx_transport_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_transport, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_srvsvc_srvsvc_NetServerSetServiceBitsEx_transport, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-svcctl.c b/epan/dissectors/packet-dcerpc-svcctl.c index ee9ed2ac4d..8334121c25 100644 --- a/epan/dissectors/packet-dcerpc-svcctl.c +++ b/epan/dissectors/packet-dcerpc-svcctl.c @@ -1227,9 +1227,13 @@ svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner(tvbuff_t *tvb _U_, int off static int svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_SERVICE_LOCK_STATUS_lock_owner, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_SERVICE_LOCK_STATUS_lock_owner, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2036,9 +2040,13 @@ svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_executablepath, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_executablepath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2055,9 +2063,13 @@ svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2082,9 +2094,13 @@ svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_dependencies, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_dependencies, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2101,9 +2117,13 @@ svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname(tvbuff_t *tvb _U_, int off static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_startname, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_startname, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2120,9 +2140,13 @@ svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_displayname, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_displayname, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2189,9 +2213,13 @@ svcctl_dissect_element_ArgumentString_string(tvbuff_t *tvb _U_, int offset _U_, static int svcctl_dissect_element_ArgumentString_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ArgumentString_string, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ArgumentString_string, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2242,9 +2270,13 @@ svcctl_dissect_element_ArgumentStringA_string(tvbuff_t *tvb _U_, int offset _U_, static int svcctl_dissect_element_ArgumentStringA_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_ArgumentStringA_string, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_ArgumentStringA_string, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2579,7 +2611,11 @@ svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor(tvbuff_t * static int svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__); return offset; } @@ -2692,7 +2728,11 @@ svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor(tvbuff_t *tv static int svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__); return offset; } @@ -2931,9 +2971,13 @@ svcctl_dissect_element_NotifyBootConfigStatus_machine_name(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_NotifyBootConfigStatus_machine_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3028,9 +3072,13 @@ svcctl_dissect_element_SCSetServiceBitsW_lpString(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_SCSetServiceBitsW_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsW_lpString, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsW_lpString, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3126,9 +3174,13 @@ svcctl_dissect_element_ChangeServiceConfigW_binary_path(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_ChangeServiceConfigW_binary_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_binary_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3145,9 +3197,13 @@ svcctl_dissect_element_ChangeServiceConfigW_load_order_group(tvbuff_t *tvb _U_, static int svcctl_dissect_element_ChangeServiceConfigW_load_order_group_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3180,9 +3236,13 @@ svcctl_dissect_element_ChangeServiceConfigW_dependencies(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_ChangeServiceConfigW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_dependencies, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_dependencies, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3207,9 +3267,13 @@ svcctl_dissect_element_ChangeServiceConfigW_service_start_name(tvbuff_t *tvb _U_ static int svcctl_dissect_element_ChangeServiceConfigW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3226,9 +3290,13 @@ svcctl_dissect_element_ChangeServiceConfigW_password(tvbuff_t *tvb _U_, int offs static int svcctl_dissect_element_ChangeServiceConfigW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_password, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3253,9 +3321,13 @@ svcctl_dissect_element_ChangeServiceConfigW_display_name(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_ChangeServiceConfigW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_display_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_display_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3346,9 +3418,13 @@ svcctl_dissect_element_CreateServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3365,9 +3441,13 @@ svcctl_dissect_element_CreateServiceW_DisplayName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceW_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_DisplayName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_DisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3408,9 +3488,13 @@ svcctl_dissect_element_CreateServiceW_error_control(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateServiceW_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_binary_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3427,9 +3511,13 @@ svcctl_dissect_element_CreateServiceW_LoadOrderGroup(tvbuff_t *tvb _U_, int offs static int svcctl_dissect_element_CreateServiceW_LoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3462,7 +3550,11 @@ svcctl_dissect_element_CreateServiceW_dependencies(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_dependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceW_dependencies__); return offset; } @@ -3494,9 +3586,13 @@ svcctl_dissect_element_CreateServiceW_service_start_name(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_CreateServiceW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_service_start_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3513,7 +3609,11 @@ svcctl_dissect_element_CreateServiceW_password(tvbuff_t *tvb _U_, int offset _U_ static int svcctl_dissect_element_CreateServiceW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_password__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceW_password__); return offset; } @@ -3661,7 +3761,11 @@ svcctl_dissect_element_EnumDependentServicesW_service_status(tvbuff_t *tvb _U_, static int svcctl_dissect_element_EnumDependentServicesW_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesW_service_status__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumDependentServicesW_service_status__); return offset; } @@ -3854,9 +3958,13 @@ svcctl_dissect_element_OpenSCManagerW_MachineName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_OpenSCManagerW_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_MachineName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_MachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3873,9 +3981,13 @@ svcctl_dissect_element_OpenSCManagerW_DatabaseName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_OpenSCManagerW_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_DatabaseName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_DatabaseName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3961,9 +4073,13 @@ svcctl_dissect_element_OpenServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset _U static int svcctl_dissect_element_OpenServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenServiceW_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenServiceW_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4253,7 +4369,11 @@ svcctl_dissect_element_StartServiceW_Arguments(tvbuff_t *tvb _U_, int offset _U_ static int svcctl_dissect_element_StartServiceW_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceW_Arguments__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_StartServiceW_Arguments__); return offset; } @@ -4326,9 +4446,13 @@ svcctl_dissect_element_GetServiceDisplayNameW_service_name(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_GetServiceDisplayNameW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_service_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_service_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4353,9 +4477,13 @@ svcctl_dissect_element_GetServiceDisplayNameW_display_name_(tvbuff_t *tvb _U_, i static int svcctl_dissect_element_GetServiceDisplayNameW_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_display_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_display_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4444,9 +4572,13 @@ svcctl_dissect_element_GetServiceKeyNameW_display_name(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_GetServiceKeyNameW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_display_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_display_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4471,9 +4603,13 @@ svcctl_dissect_element_GetServiceKeyNameW_service_name_(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_GetServiceKeyNameW_service_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_service_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_service_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4586,9 +4722,13 @@ svcctl_dissect_element_SCSetServiceBitsA_lpString(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_SCSetServiceBitsA_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsA_lpString, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsA_lpString, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4864,9 +5004,13 @@ svcctl_dissect_element_CreateServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4883,9 +5027,13 @@ svcctl_dissect_element_CreateServiceA_DisplayName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceA_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_DisplayName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_DisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4926,9 +5074,13 @@ svcctl_dissect_element_CreateServiceA_error_control(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateServiceA_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_binary_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4945,9 +5097,13 @@ svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4980,7 +5136,11 @@ svcctl_dissect_element_CreateServiceA_dependencies(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_CreateServiceA_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_dependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceA_dependencies__); return offset; } @@ -5012,9 +5172,13 @@ svcctl_dissect_element_CreateServiceA_service_start_name(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_CreateServiceA_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_service_start_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5031,7 +5195,11 @@ svcctl_dissect_element_CreateServiceA_password(tvbuff_t *tvb _U_, int offset _U_ static int svcctl_dissect_element_CreateServiceA_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_password__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceA_password__); return offset; } @@ -5312,7 +5480,11 @@ svcctl_dissect_element_EnumServicesStatusA_offered(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_EnumServicesStatusA_service(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_service_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusA_service_); return offset; } @@ -5438,9 +5610,13 @@ svcctl_dissect_element_OpenSCManagerA_MachineName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_OpenSCManagerA_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_MachineName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_MachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5457,9 +5633,13 @@ svcctl_dissect_element_OpenSCManagerA_DatabaseName(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_OpenSCManagerA_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_DatabaseName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_DatabaseName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5545,9 +5725,13 @@ svcctl_dissect_element_OpenServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset _U static int svcctl_dissect_element_OpenServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenServiceA_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenServiceA_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5633,7 +5817,11 @@ svcctl_dissect_element_QueryServiceConfigA_service_handle_(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_QueryServiceConfigA_query(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigA_query_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfigA_query_); return offset; } @@ -5837,7 +6025,11 @@ svcctl_dissect_element_StartServiceA_Arguments(tvbuff_t *tvb _U_, int offset _U_ static int svcctl_dissect_element_StartServiceA_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceA_Arguments__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_StartServiceA_Arguments__); return offset; } @@ -5934,9 +6126,13 @@ svcctl_dissect_element_GetServiceDisplayNameA_display_name_(tvbuff_t *tvb _U_, i static int svcctl_dissect_element_GetServiceDisplayNameA_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceDisplayNameA_display_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceDisplayNameA_display_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6049,9 +6245,13 @@ svcctl_dissect_element_GetServiceKeyNameA_key_name_(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_GetServiceKeyNameA_key_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceKeyNameA_key_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceKeyNameA_key_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6140,9 +6340,13 @@ svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup(tvbuff_t *tvb _U_ static int svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6233,7 +6437,11 @@ svcctl_dissect_element_EnumServiceGroupW_service_state(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_EnumServiceGroupW_lpBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_lpBuffer_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServiceGroupW_lpBuffer_); return offset; } @@ -6313,9 +6521,13 @@ svcctl_dissect_element_EnumServiceGroupW_pszGroupName(tvbuff_t *tvb _U_, int off static int svcctl_dissect_element_EnumServiceGroupW_pszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6551,7 +6763,11 @@ svcctl_dissect_element_QueryServiceConfig2A_info_level(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_QueryServiceConfig2A_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2A_buffer_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfig2A_buffer_); return offset; } @@ -6664,7 +6880,11 @@ svcctl_dissect_element_QueryServiceConfig2W_buffer(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_QueryServiceConfig2W_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2W_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfig2W_buffer__); return offset; } @@ -6777,7 +6997,11 @@ svcctl_dissect_element_QueryServiceStatusEx_buffer(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_QueryServiceStatusEx_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatusEx_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceStatusEx_buffer__); return offset; } @@ -6898,7 +7122,11 @@ svcctl_dissect_element_EnumServicesStatusExA_state(tvbuff_t *tvb _U_, int offset static int svcctl_dissect_element_EnumServicesStatusExA_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_services_); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusExA_services_); return offset; } @@ -6986,9 +7214,13 @@ svcctl_dissect_element_EnumServicesStatusExA_group_name_(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_EnumServicesStatusExA_group_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExA_group_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExA_group_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7106,7 +7338,11 @@ svcctl_dissect_element_EnumServicesStatusExW_services(tvbuff_t *tvb _U_, int off static int svcctl_dissect_element_EnumServicesStatusExW_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_services__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusExW_services__); return offset; } @@ -7186,9 +7422,13 @@ svcctl_dissect_element_EnumServicesStatusExW_group_name(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_EnumServicesStatusExW_group_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExW_group_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExW_group_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7298,9 +7538,13 @@ svcctl_dissect_element_CreateServiceWOW64A_scm_handle_(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_CreateServiceWOW64A_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7317,9 +7561,13 @@ svcctl_dissect_element_CreateServiceWOW64A_DisplayName(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_CreateServiceWOW64A_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7360,9 +7608,13 @@ svcctl_dissect_element_CreateServiceWOW64A_error_control(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_CreateServiceWOW64A_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_binary_path, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7379,9 +7631,13 @@ svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey(tvbuff_t *tvb _U_, static int svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7414,7 +7670,11 @@ svcctl_dissect_element_CreateServiceWOW64A_dependencies(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_CreateServiceWOW64A_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_dependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64A_dependencies__); return offset; } @@ -7446,9 +7706,13 @@ svcctl_dissect_element_CreateServiceWOW64A_service_start_name(tvbuff_t *tvb _U_, static int svcctl_dissect_element_CreateServiceWOW64A_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7465,7 +7729,11 @@ svcctl_dissect_element_CreateServiceWOW64A_password(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateServiceWOW64A_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_password__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64A_password__); return offset; } @@ -7597,9 +7865,13 @@ svcctl_dissect_element_CreateServiceWOW64W_scm_handle_(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_CreateServiceWOW64W_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7616,9 +7888,13 @@ svcctl_dissect_element_CreateServiceWOW64W_DisplayName(tvbuff_t *tvb _U_, int of static int svcctl_dissect_element_CreateServiceWOW64W_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7659,9 +7935,13 @@ svcctl_dissect_element_CreateServiceWOW64W_error_control(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_CreateServiceWOW64W_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_binary_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7678,9 +7958,13 @@ svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey(tvbuff_t *tvb _U_, static int svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7713,7 +7997,11 @@ svcctl_dissect_element_CreateServiceWOW64W_dependencies(tvbuff_t *tvb _U_, int o static int svcctl_dissect_element_CreateServiceWOW64W_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_dependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64W_dependencies__); return offset; } @@ -7745,9 +8033,13 @@ svcctl_dissect_element_CreateServiceWOW64W_service_start_name(tvbuff_t *tvb _U_, static int svcctl_dissect_element_CreateServiceWOW64W_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7764,7 +8056,11 @@ svcctl_dissect_element_CreateServiceWOW64W_password(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateServiceWOW64W_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_password__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64W_password__); return offset; } @@ -8275,9 +8571,13 @@ svcctl_dissect_element_CreateWowService_scm_handle_(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateWowService_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_ServiceName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_ServiceName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8294,9 +8594,13 @@ svcctl_dissect_element_CreateWowService_DisplayName(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_CreateWowService_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_DisplayName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_DisplayName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8337,9 +8641,13 @@ svcctl_dissect_element_CreateWowService_error_control(tvbuff_t *tvb _U_, int off static int svcctl_dissect_element_CreateWowService_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_binary_path, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_binary_path, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8356,9 +8664,13 @@ svcctl_dissect_element_CreateWowService_LoadOrderGroupKey(tvbuff_t *tvb _U_, int static int svcctl_dissect_element_CreateWowService_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8391,7 +8703,11 @@ svcctl_dissect_element_CreateWowService_dependencies(tvbuff_t *tvb _U_, int offs static int svcctl_dissect_element_CreateWowService_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_dependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateWowService_dependencies__); return offset; } @@ -8423,9 +8739,13 @@ svcctl_dissect_element_CreateWowService_service_start_name(tvbuff_t *tvb _U_, in static int svcctl_dissect_element_CreateWowService_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_service_start_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_service_start_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8442,7 +8762,11 @@ svcctl_dissect_element_CreateWowService_password(tvbuff_t *tvb _U_, int offset _ static int svcctl_dissect_element_CreateWowService_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_password__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateWowService_password__); return offset; } @@ -8652,9 +8976,13 @@ svcctl_dissect_element_OpenSCManager2_database_name(tvbuff_t *tvb _U_, int offse static int svcctl_dissect_element_OpenSCManager2_database_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManager2_database_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManager2_database_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-winreg.c b/epan/dissectors/packet-dcerpc-winreg.c index 050b2cd4fe..cfb96f10bf 100644 --- a/epan/dissectors/packet-dcerpc-winreg.c +++ b/epan/dissectors/packet-dcerpc-winreg.c @@ -706,9 +706,13 @@ winreg_dissect_element_String_name(tvbuff_t *tvb _U_, int offset _U_, packet_inf static int winreg_dissect_element_String_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_winreg_winreg_String_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_winreg_winreg_String_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -968,7 +972,13 @@ winreg_dissect_element_StringBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet_ static int winreg_dissect_element_StringBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_StringBuf_name__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_StringBuf_name__); return offset; } @@ -1048,7 +1058,13 @@ winreg_dissect_element_ValNameBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet static int winreg_dissect_element_ValNameBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ValNameBuf_name__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_ValNameBuf_name__); return offset; } @@ -2176,7 +2192,13 @@ winreg_dissect_element_EnumValue_value(tvbuff_t *tvb _U_, int offset _U_, packet static int winreg_dissect_element_EnumValue_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_value__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_EnumValue_value__); return offset; } @@ -2970,7 +2992,13 @@ winreg_dissect_element_QueryValue_data(tvbuff_t *tvb _U_, int offset _U_, packet static int winreg_dissect_element_QueryValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryValue_data__); return offset; } @@ -3439,7 +3467,11 @@ winreg_dissect_element_SetValue_data(tvbuff_t *tvb _U_, int offset _U_, packet_i static int winreg_dissect_element_SetValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetValue_data__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_SetValue_data__); return offset; } @@ -3937,7 +3969,13 @@ winreg_dissect_element_QueryMultipleValues_values_in(tvbuff_t *tvb _U_, int offs static int winreg_dissect_element_QueryMultipleValues_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_in__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues_values_in__); return offset; } @@ -3961,7 +3999,13 @@ winreg_dissect_element_QueryMultipleValues_values_out(tvbuff_t *tvb _U_, int off static int winreg_dissect_element_QueryMultipleValues_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_out__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues_values_out__); return offset; } @@ -3993,7 +4037,13 @@ winreg_dissect_element_QueryMultipleValues_buffer(tvbuff_t *tvb _U_, int offset static int winreg_dissect_element_QueryMultipleValues_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues_buffer__); return offset; } @@ -4444,7 +4494,13 @@ winreg_dissect_element_QueryMultipleValues2_values_in(tvbuff_t *tvb _U_, int off static int winreg_dissect_element_QueryMultipleValues2_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_in__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues2_values_in__); return offset; } @@ -4468,7 +4524,13 @@ winreg_dissect_element_QueryMultipleValues2_values_out(tvbuff_t *tvb _U_, int of static int winreg_dissect_element_QueryMultipleValues2_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_out__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues2_values_out__); return offset; } @@ -4500,7 +4562,13 @@ winreg_dissect_element_QueryMultipleValues2_buffer(tvbuff_t *tvb _U_, int offset static int winreg_dissect_element_QueryMultipleValues2_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, winreg_dissect_element_QueryMultipleValues2_buffer__); return offset; } diff --git a/epan/dissectors/packet-dcerpc-winspool.c b/epan/dissectors/packet-dcerpc-winspool.c index 99f66112fb..c96be4072b 100644 --- a/epan/dissectors/packet-dcerpc-winspool.c +++ b/epan/dissectors/packet-dcerpc-winspool.c @@ -417,7 +417,7 @@ static int iremotewinspool_dissect_element_winspool_PrintPropertyValueUnion_prop static int iremotewinspool_dissect_element_winspool_PrintPropertyValueUnion_propertyReplyContainer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int iremotewinspool_dissect_element_winspool_PrintPropertyValueUnion_propertyOptionsContainer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int iremotewinspool_dissect_element_winspool_PrintPropertyValue_PropertyType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *PropertyType); -static int iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *PropertyType); +static int iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t PropertyType); static int iremotewinspool_dissect_element_winspool_PrintNamedProperty_propertyName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int iremotewinspool_dissect_element_winspool_PrintNamedProperty_propertyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int iremotewinspool_dissect_element_winspool_PrintNamedProperty_propertyValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1168,9 +1168,13 @@ iremotewinspool_dissect_element_winspool_PrintPropertyValueUnion_propertyString( static int iremotewinspool_dissect_element_winspool_PrintPropertyValueUnion_propertyString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_PrintPropertyValueUnion_propertyString, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_PrintPropertyValueUnion_propertyString, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1253,7 +1257,9 @@ iremotewinspool_dissect_winspool_PrintPropertyValueUnion(tvbuff_t *tvb _U_, int tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_iremotewinspool_winspool_PrintPropertyValueUnion, &item, "winspool_PrintPropertyValueUnion"); } + UNION_ALIGN_TO_8_BYTES; offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + /* ms_union is always aligned to the largest union arm*/ ALIGN_TO_8_BYTES; switch(level) { @@ -1313,9 +1319,9 @@ iremotewinspool_dissect_element_winspool_PrintPropertyValue_PropertyType(tvbuff_ } static int -iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *PropertyType) +iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t PropertyType) { - offset = iremotewinspool_dissect_winspool_PrintPropertyValueUnion(tvb, offset, pinfo, tree, di, drep, hf_iremotewinspool_winspool_PrintPropertyValue_value, *PropertyType); + offset = iremotewinspool_dissect_winspool_PrintPropertyValueUnion(tvb, offset, pinfo, tree, di, drep, hf_iremotewinspool_winspool_PrintPropertyValue_value, PropertyType); return offset; } @@ -1339,7 +1345,7 @@ iremotewinspool_dissect_struct_winspool_PrintPropertyValue(tvbuff_t *tvb _U_, in offset = iremotewinspool_dissect_element_winspool_PrintPropertyValue_PropertyType(tvb, offset, pinfo, tree, di, drep, &PropertyType); - offset = iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvb, offset, pinfo, tree, di, drep, &PropertyType); + offset = iremotewinspool_dissect_element_winspool_PrintPropertyValue_value(tvb, offset, pinfo, tree, di, drep, PropertyType); proto_item_set_len(item, offset-old_offset); @@ -1369,9 +1375,13 @@ iremotewinspool_dissect_element_winspool_PrintNamedProperty_propertyName(tvbuff_ static int iremotewinspool_dissect_element_winspool_PrintNamedProperty_propertyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_PrintNamedProperty_propertyName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_PrintNamedProperty_propertyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1441,7 +1451,11 @@ iremotewinspool_dissect_element_winspool_PrintPropertiesCollection_propertiesCol static int iremotewinspool_dissect_element_winspool_PrintPropertiesCollection_propertiesCollection_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_PrintPropertiesCollection_propertiesCollection__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_PrintPropertiesCollection_propertiesCollection__); return offset; } @@ -1564,9 +1578,13 @@ iremotewinspool_dissect_element_winspool_AsyncOpenPrinter_pPrinterName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncOpenPrinter_pPrinterName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncOpenPrinter_pPrinterName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncOpenPrinter_pPrinterName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1599,9 +1617,13 @@ iremotewinspool_dissect_element_winspool_AsyncOpenPrinter_pDatatype(tvbuff_t *tv static int iremotewinspool_dissect_element_winspool_AsyncOpenPrinter_pDatatype_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncOpenPrinter_pDatatype, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncOpenPrinter_pDatatype, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1701,9 +1723,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrinter_pName(tvbuff_t *tvb _U_ static int iremotewinspool_dissect_element_winspool_AsyncAddPrinter_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrinter_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrinter_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1943,7 +1969,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetJob_pJob(tvbuff_t *tvb _U_, int static int iremotewinspool_dissect_element_winspool_AsyncGetJob_pJob_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetJob_pJob__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetJob_pJob__); return offset; } @@ -2069,7 +2099,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumJobs_pJob(tvbuff_t *tvb _U_, i static int iremotewinspool_dissect_element_winspool_AsyncEnumJobs_pJob_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumJobs_pJob__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumJobs_pJob__); return offset; } @@ -2202,7 +2236,11 @@ iremotewinspool_dissect_element_winspool_AsyncAddJob_pAddJob(tvbuff_t *tvb _U_, static int iremotewinspool_dissect_element_winspool_AsyncAddJob_pAddJob_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncAddJob_pAddJob__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncAddJob_pAddJob__); return offset; } @@ -2493,7 +2531,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinter_pPrinter(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncGetPrinter_pPrinter_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinter_pPrinter__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinter_pPrinter__); return offset; } @@ -2701,7 +2743,11 @@ iremotewinspool_dissect_element_winspool_AsyncWritePrinter_pBuf(tvbuff_t *tvb _U static int iremotewinspool_dissect_element_winspool_AsyncWritePrinter_pBuf_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncWritePrinter_pBuf__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncWritePrinter_pBuf__); return offset; } @@ -2899,9 +2945,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pValueName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterData_pValueName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterData_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -2934,7 +2984,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pData(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinterData_pData__); return offset; } @@ -3035,9 +3089,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pKeyName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDataEx_pKeyName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDataEx_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3054,9 +3112,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pValueName(tvbuff static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDataEx_pValueName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDataEx_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3089,7 +3151,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pData(tvbuff_t *t static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDataEx_pData__); return offset; } @@ -3193,9 +3259,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pValueName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterData_pValueName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterData_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3220,7 +3290,11 @@ iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pData(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncSetPrinterData_pData__); return offset; } @@ -3299,9 +3373,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pKeyName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterDataEx_pKeyName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterDataEx_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3318,9 +3396,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pValueName(tvbuff static int iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterDataEx_pValueName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPrinterDataEx_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3345,7 +3427,11 @@ iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pData(tvbuff_t *t static int iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncSetPrinterDataEx_pData__); return offset; } @@ -3527,9 +3613,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeleteForm_pFormName(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncDeleteForm_pFormName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteForm_pFormName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteForm_pFormName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3584,9 +3674,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetForm_pFormName(tvbuff_t *tvb _U static int iremotewinspool_dissect_element_winspool_AsyncGetForm_pFormName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetForm_pFormName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetForm_pFormName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3611,7 +3705,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetForm_pForm(tvbuff_t *tvb _U_, i static int iremotewinspool_dissect_element_winspool_AsyncGetForm_pForm_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetForm_pForm__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetForm_pForm__); return offset; } @@ -3713,9 +3811,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetForm_pFormName(tvbuff_t *tvb _U static int iremotewinspool_dissect_element_winspool_AsyncSetForm_pFormName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetForm_pFormName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetForm_pFormName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3797,7 +3899,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumForms_pForm(tvbuff_t *tvb _U_, static int iremotewinspool_dissect_element_winspool_AsyncEnumForms_pForm_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumForms_pForm__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumForms_pForm__); return offset; } @@ -3916,9 +4022,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pEnvironment(tvbu static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriver_pEnvironment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriver_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -3943,7 +4053,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pDriver(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pDriver_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pDriver__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriver_pDriver__); return offset; } @@ -4115,7 +4229,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pValueName(tvbuff_ static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pValueName__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pValueName__); return offset; } @@ -4179,7 +4297,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pData(tvbuff_t *tv static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterData_pData__); return offset; } @@ -4291,9 +4413,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pKeyName(tvbuff_ static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDataEx_pKeyName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDataEx_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4310,7 +4436,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pEnumValues(tvbu static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pEnumValues_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pEnumValues__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDataEx_pEnumValues__); return offset; } @@ -4427,9 +4557,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pKeyName(tvbuff_t * static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterKey_pKeyName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterKey_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4446,7 +4580,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pSubkey(tvbuff_t *t static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pSubkey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pSubkey__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterKey_pSubkey__); return offset; } @@ -4543,9 +4681,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterData_pValueName(tvbuf static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterData_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterData_pValueName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterData_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4600,9 +4742,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDataEx_pKeyName(tvbuf static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDataEx_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDataEx_pKeyName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDataEx_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4619,9 +4765,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDataEx_pValueName(tvb static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDataEx_pValueName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDataEx_pValueName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDataEx_pValueName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4679,9 +4829,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterKey_pKeyName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterKey_pKeyName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterKey_pKeyName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterKey_pKeyName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4736,9 +4890,13 @@ iremotewinspool_dissect_element_winspool_AsyncXcvData_pszDataName(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncXcvData_pszDataName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncXcvData_pszDataName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncXcvData_pszDataName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4755,7 +4913,11 @@ iremotewinspool_dissect_element_winspool_AsyncXcvData_pInputData(tvbuff_t *tvb _ static int iremotewinspool_dissect_element_winspool_AsyncXcvData_pInputData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncXcvData_pInputData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncXcvData_pInputData__); return offset; } @@ -4787,7 +4949,11 @@ iremotewinspool_dissect_element_winspool_AsyncXcvData_pOutputData(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncXcvData_pOutputData_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncXcvData_pOutputData__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncXcvData_pOutputData__); return offset; } @@ -4912,9 +5078,13 @@ iremotewinspool_dissect_element_winspool_AsyncSendRecvBidiData_pAction(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncSendRecvBidiData_pAction_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSendRecvBidiData_pAction, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSendRecvBidiData_pAction, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5090,7 +5260,11 @@ iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pIn(tvbuf static int iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pIn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pIn__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pIn__); return offset; } @@ -5122,7 +5296,11 @@ iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pOut(tvbu static int iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pOut_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pOut__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncPlayGdiScriptOnPrinterIC_pOut__); return offset; } @@ -5259,9 +5437,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pName(tvbuff_t *tvb _ static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinters_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinters_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5286,7 +5468,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pPrinterEnum(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pPrinterEnum_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pPrinterEnum__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinters_pPrinterEnum__); return offset; } @@ -5400,9 +5586,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrinterDriver_pName(tvbuff_t *t static int iremotewinspool_dissect_element_winspool_AsyncAddPrinterDriver_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrinterDriver_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrinterDriver_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5476,9 +5666,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDrivers_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDrivers_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5495,9 +5689,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pEnvironment(tv static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDrivers_pEnvironment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrinterDrivers_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5522,7 +5720,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pDrivers(tvbuff static int iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pDrivers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pDrivers__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrinterDrivers_pDrivers__); return offset; } @@ -5636,9 +5838,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pName(tv static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverDirectory_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverDirectory_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5655,9 +5861,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pEnviron static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverDirectory_pEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverDirectory_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5682,7 +5892,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pDriverD static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pDriverDirectory_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pDriverDirectory__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverDirectory_pDriverDirectory__); return offset; } @@ -5776,9 +5990,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5795,9 +6013,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pEnvironment(t static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5814,9 +6036,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pDriverName(tv static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriver_pDriverName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pDriverName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriver_pDriverName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5866,9 +6092,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pName(tvbuff static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5885,9 +6115,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pEnvironment static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5904,9 +6138,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pDriverName( static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverEx_pDriverName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pDriverName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverEx_pDriverName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5978,9 +6216,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pName(tvbuff_t * static int iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5997,9 +6239,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pEnvironment(tvb static int iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pEnvironment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6016,9 +6262,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pPathName(tvbuff static int iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pPathName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pPathName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pPathName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6035,9 +6285,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pPrintProcessorN static int iremotewinspool_dissect_element_winspool_AsyncAddPrintProcessor_pPrintProcessorName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pPrintProcessorName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPrintProcessor_pPrintProcessorName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6090,9 +6344,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pName(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessors_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessors_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6109,9 +6367,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pEnvironment(t static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessors_pEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessors_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6136,7 +6398,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pPrintProcesso static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pPrintProcessorInfo_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pPrintProcessorInfo__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessors_pPrintProcessorInfo__); return offset; } @@ -6250,9 +6516,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pName(t static int iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrintProcessorDirectory_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrintProcessorDirectory_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6269,9 +6539,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pEnviro static int iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrintProcessorDirectory_pEnvironment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrintProcessorDirectory_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6296,7 +6570,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pPrintP static int iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pPrintProcessorDirectory_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pPrintProcessorDirectory__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrintProcessorDirectory_pPrintProcessorDirectory__); return offset; } @@ -6390,9 +6668,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pName(tvbuff_t *tvb _U_, static int iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPorts_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPorts_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6417,7 +6699,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pPort(tvbuff_t *tvb _U_, static int iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pPort_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pPort__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPorts_pPort__); return offset; } @@ -6528,9 +6814,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pName(tvbuff_t *tvb _ static int iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumMonitors_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumMonitors_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6555,7 +6845,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pMonitor(tvbuff_t *tv static int iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pMonitor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pMonitor__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumMonitors_pMonitor__); return offset; } @@ -6666,9 +6960,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPort_pName(tvbuff_t *tvb _U_, i static int iremotewinspool_dissect_element_winspool_AsyncAddPort_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPort_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPort_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6717,9 +7015,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPort_pMonitorName(tvbuff_t *tvb static int iremotewinspool_dissect_element_winspool_AsyncAddPort_pMonitorName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPort_pMonitorName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPort_pMonitorName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6772,9 +7074,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetPort_pName(tvbuff_t *tvb _U_, i static int iremotewinspool_dissect_element_winspool_AsyncSetPort_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPort_pName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPort_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6791,9 +7097,13 @@ iremotewinspool_dissect_element_winspool_AsyncSetPort_pPortName(tvbuff_t *tvb _U static int iremotewinspool_dissect_element_winspool_AsyncSetPort_pPortName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPort_pPortName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncSetPort_pPortName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6859,9 +7169,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddMonitor_Name(tvbuff_t *tvb _U_, static int iremotewinspool_dissect_element_winspool_AsyncAddMonitor_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddMonitor_Name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddMonitor_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6924,9 +7238,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_Name(tvbuff_t *tvb _ static int iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_Name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6943,9 +7261,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_pEnvironment(tvbuff_ static int iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_pEnvironment, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6962,9 +7284,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_pMonitorName(tvbuff_ static int iremotewinspool_dissect_element_winspool_AsyncDeleteMonitor_pMonitorName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_pMonitorName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteMonitor_pMonitorName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7014,9 +7340,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_Name(tvbuff_t static int iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_Name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_Name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_Name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7033,9 +7363,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_pEnvironment( static int iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_pEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_pEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_pEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7052,9 +7386,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_pPrintProcess static int iremotewinspool_dissect_element_winspool_AsyncDeletePrintProcessor_pPrintProcessorName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_pPrintProcessorName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrintProcessor_pPrintProcessorName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7104,9 +7442,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pName( static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessorDatatypes_pName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessorDatatypes_pName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7123,9 +7465,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pPrint static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pPrintProcessorName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessorDatatypes_pPrintProcessorName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPrintProcessorDatatypes_pPrintProcessorName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7150,7 +7496,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pDatat static int iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pDatatypes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pDatatypes__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPrintProcessorDatatypes_pDatatypes__); return offset; } @@ -7264,9 +7614,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pServer(tv static int iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7283,9 +7637,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pPrinterNa static int iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pPrinterName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pPrinterName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pPrinterName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7302,9 +7660,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pPrintServ static int iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pPrintServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pPrintServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pPrintServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7321,9 +7683,13 @@ iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pProvider( static int iremotewinspool_dissect_element_winspool_AsyncAddPerMachineConnection_pProvider_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pProvider, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncAddPerMachineConnection_pProvider, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7376,9 +7742,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePerMachineConnection_pServer static int iremotewinspool_dissect_element_winspool_AsyncDeletePerMachineConnection_pServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePerMachineConnection_pServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePerMachineConnection_pServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7395,9 +7765,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePerMachineConnection_pPrinte static int iremotewinspool_dissect_element_winspool_AsyncDeletePerMachineConnection_pPrinterName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePerMachineConnection_pPrinterName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePerMachineConnection_pPrinterName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7444,9 +7818,13 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pServer( static int iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPerMachineConnections_pServer, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncEnumPerMachineConnections_pServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7463,7 +7841,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pPrinter static int iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pPrinterEnum_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pPrinterEnum__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumPerMachineConnections_pPrinterEnum__); return offset; } @@ -7836,9 +8218,13 @@ iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_ps static int iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7855,9 +8241,13 @@ iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_ps static int iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_pszInfPath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszInfPath, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszInfPath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7874,9 +8264,13 @@ iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_ps static int iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_pszDriverName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszDriverName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszDriverName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7893,9 +8287,13 @@ iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_ps static int iremotewinspool_dissect_element_winspool_AsyncInstallPrinterDriverFromPackage_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncInstallPrinterDriverFromPackage_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7959,9 +8357,13 @@ iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszServ static int iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszServer, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7978,9 +8380,13 @@ iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszInfP static int iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszInfPath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszInfPath, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszInfPath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7997,9 +8403,13 @@ iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszEnvi static int iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncUploadPrinterDriverPackage_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8024,7 +8434,11 @@ iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszDest static int iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszDestInfPath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszDestInfPath__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncUploadPrinterDriverPackage_pszDestInfPath__); return offset; } @@ -8112,9 +8526,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszServer(tv static int iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetCorePrinterDrivers_pszServer, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetCorePrinterDrivers_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8131,9 +8549,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszEnvironme static int iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetCorePrinterDrivers_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetCorePrinterDrivers_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8158,7 +8580,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszzCoreDriv static int iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszzCoreDriverDependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszzCoreDriverDependencies__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pszzCoreDriverDependencies__); return offset; } @@ -8190,7 +8616,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pCorePrinter static int iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pCorePrinterDrivers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pCorePrinterDrivers__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetCorePrinterDrivers_pCorePrinterDrivers__); return offset; } @@ -8257,9 +8687,13 @@ iremotewinspool_dissect_element_winspool_AsyncCorePrinterDriverInstalled_pszServ static int iremotewinspool_dissect_element_winspool_AsyncCorePrinterDriverInstalled_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncCorePrinterDriverInstalled_pszServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncCorePrinterDriverInstalled_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8276,9 +8710,13 @@ iremotewinspool_dissect_element_winspool_AsyncCorePrinterDriverInstalled_pszEnvi static int iremotewinspool_dissect_element_winspool_AsyncCorePrinterDriverInstalled_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncCorePrinterDriverInstalled_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncCorePrinterDriverInstalled_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8378,9 +8816,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszSer static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszServer, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8397,9 +8839,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszEnv static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8416,9 +8862,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszLan static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszLanguage_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszLanguage, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszLanguage, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8435,9 +8885,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszPac static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszPackageID_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszPackageID, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetPrinterDriverPackagePath_pszPackageID, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8454,7 +8908,11 @@ iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszDri static int iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszDriverPackageCab_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszDriverPackageCab__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncGetPrinterDriverPackagePath_pszDriverPackageCab__); return offset; } @@ -8551,9 +9009,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszServ static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszServer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszServer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8570,9 +9032,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszInfP static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszInfPath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszInfPath, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszInfPath, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8589,9 +9055,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszEnvi static int iremotewinspool_dissect_element_winspool_AsyncDeletePrinterDriverPackage_pszEnvironment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszEnvironment, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeletePrinterDriverPackage_pszEnvironment, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8649,7 +9119,11 @@ iremotewinspool_dissect_element_winspool_AsyncReadPrinter_pBuf(tvbuff_t *tvb _U_ static int iremotewinspool_dissect_element_winspool_AsyncReadPrinter_pBuf_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncReadPrinter_pBuf__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncReadPrinter_pBuf__); return offset; } @@ -8743,9 +9217,13 @@ iremotewinspool_dissect_element_winspool_AsyncResetPrinter_pDatatype(tvbuff_t *t static int iremotewinspool_dissect_element_winspool_AsyncResetPrinter_pDatatype_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncResetPrinter_pDatatype, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncResetPrinter_pDatatype, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8827,9 +9305,13 @@ iremotewinspool_dissect_element_winspool_AsyncGetJobNamedPropertyValue_pszName(t static int iremotewinspool_dissect_element_winspool_AsyncGetJobNamedPropertyValue_pszName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetJobNamedPropertyValue_pszName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncGetJobNamedPropertyValue_pszName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8980,9 +9462,13 @@ iremotewinspool_dissect_element_winspool_AsyncDeleteJobNamedProperty_pszName(tvb static int iremotewinspool_dissect_element_winspool_AsyncDeleteJobNamedProperty_pszName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteJobNamedProperty_pszName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_iremotewinspool_winspool_AsyncDeleteJobNamedProperty_pszName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9072,7 +9558,11 @@ iremotewinspool_dissect_element_winspool_AsyncEnumJobNamedProperties_ppPropertie static int iremotewinspool_dissect_element_winspool_AsyncEnumJobNamedProperties_ppProperties__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, iremotewinspool_dissect_element_winspool_AsyncEnumJobNamedProperties_ppProperties___); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, iremotewinspool_dissect_element_winspool_AsyncEnumJobNamedProperties_ppProperties___); return offset; } diff --git a/epan/dissectors/packet-dcerpc-witness.c b/epan/dissectors/packet-dcerpc-witness.c index 4946e9c07c..f49a230dc7 100644 --- a/epan/dissectors/packet-dcerpc-witness.c +++ b/epan/dissectors/packet-dcerpc-witness.c @@ -173,15 +173,12 @@ static int witness_dissect_element_IPaddrInfo_ipv4(tvbuff_t *tvb _U_, int offset static int witness_dissect_element_IPaddrInfo_ipv6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_IPaddrInfoList_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_IPaddrInfoList_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int witness_dissect_element_IPaddrInfoList_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_notifyResponse_message_resource_change(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_notifyResponse_message_client_move(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_notifyResponse_message_share_move(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_notifyResponse_message_ip_change(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_notifyResponse_message_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int witness_dissect_element_notifyResponse_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type); static int witness_dissect_element_notifyResponse_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); -static int witness_dissect_element_notifyResponse_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static const true_false_string witness_RegisterEx_flags_WITNESS_REGISTER_IP_NOTIFICATION_tfs = { "WITNESS_REGISTER_IP_NOTIFICATION is SET", "WITNESS_REGISTER_IP_NOTIFICATION is NOT SET", @@ -217,16 +214,76 @@ static int witness_dissect_element_RegisterEx_client_computer_name_(tvbuff_t *tv static int witness_dissect_element_RegisterEx_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int witness_dissect_element_RegisterEx_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); #include "to_str.h" + #include "wsutil/str_util.h" +static int +witness_dissect_element_ResourceChange_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + proto_item *item = NULL; + const char *s = NULL; + int levels = 2; + uint32_t type = 0; + static const value_string type_vals[] = { + { WITNESS_RESOURCE_STATE_UNKNOWN, "RESOURCE_STATE_UNKNOWN" }, + { WITNESS_RESOURCE_STATE_AVAILABLE, "RESOURCE_AVAILABLE" }, + { WITNESS_RESOURCE_STATE_UNAVAILABLE, "RESOURCE_UNAVAILABLE" }, + { 0, NULL } + }; + offset = witness_dissect_enum_ResourceChange_type(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_ResourceChange_type, &type); + s = val_to_str_wmem(pinfo->pool, type, VALS(type_vals), "unknown type: 0x%x"); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", s); + } + if (tree != NULL) { + item = tree->last_child; + } + item = proto_item_get_parent(item); + while (item && levels > 0) { + proto_item_append_text(item, " %s", s); + item = proto_item_get_parent(item); + levels--; + } + return offset; +} +static int +witness_dissect_element_ResourceChange_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + int options = CB_STR_COL_INFO | CB_STR_ITEM_LEVELS(2); + offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_witness_witness_ResourceChange_name, options); + return offset; +} static int witness_dissect_notifyResponse_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_); +struct witness_dissect_notifyResponse_message_state { + uint64_t magic1; + uint32_t type; + uint32_t num; + uint64_t magic2; +}; static int witness_dissect_notifyResponse_message_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo, - proto_tree *tree, dcerpc_info *di, uint8_t *drep _U_) + proto_tree *tree, dcerpc_info *p_di, uint8_t *p_drep _U_) { - uint32_t *type = (uint32_t *)di->private_data; + const struct witness_dissect_notifyResponse_message_state *state = + (const struct witness_dissect_notifyResponse_message_state *)p_di->private_data; uint8_t le_drep[4] = { DREP_LITTLE_ENDIAN, }; - return witness_dissect_notifyResponse_message(tvb, offset, pinfo, tree, di, le_drep, - hf_witness_witness_notifyResponse_messages_, *type); + static dcerpc_info di = {0, }; /* fake dcerpc_info struct */ + static dcerpc_call_value call_data = { 0, }; + tvbuff_t *subtvb = tvb_new_subset_length(tvb, offset, length); + int suboffset = 0; + uint32_t i; + ws_assert(state->magic1 == 0x0123456789ABCDEF); + ws_assert(state->magic2 == 0xFEDCBA9876543210); + /* fake whatever state the dcerpc runtime support needs */ + di.conformant_run=0; + /* we need di->call_data->flags.NDR64 == 0 */ + di.call_data=&call_data; + init_ndr_pointer_list(&di); + for (i=0; i < state->num; i++) { + suboffset = witness_dissect_notifyResponse_message(subtvb, suboffset, pinfo, tree, &di, le_drep, + hf_witness_witness_notifyResponse_messages_, state->type); + } + free_ndr_pointer_list(&di); + return offset + suboffset; } static int witness_dissect_element_notifyResponse_messages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info *di _U_, uint8_t *drep _U_) @@ -235,25 +292,82 @@ witness_dissect_element_notifyResponse_messages(tvbuff_t *tvb _U_, int offset _U witness_dissect_notifyResponse_message_); return offset; } +static int +witness_dissect_element_notifyResponse_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) +{ + offset = witness_dissect_enum_notifyResponse_type(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_notifyResponse_type, type); + return offset; +} +static int +witness_dissect_element_notifyResponse_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *num) +{ + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_notifyResponse_num, 0, num); + return offset; +} int witness_dissect_struct_notifyResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - uint32_t *type = NULL; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_4_BYTES; + struct witness_dissect_notifyResponse_message_state *state = NULL; + const char *type_name = "UNKNOWN"; 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_witness_witness_notifyResponse); } - type = wmem_new0(pinfo->pool, uint32_t); - offset = witness_dissect_element_notifyResponse_type(tvb, offset, pinfo, tree, di, drep, type); + state = wmem_new0(pinfo->pool, struct witness_dissect_notifyResponse_message_state); + state->magic1 = 0x0123456789ABCDEF; + state->magic2 = 0xFEDCBA9876543210; + offset = witness_dissect_element_notifyResponse_type(tvb, offset, pinfo, tree, di, drep, &state->type); offset = witness_dissect_element_notifyResponse_length(tvb, offset, pinfo, tree, di, drep); - offset = witness_dissect_element_notifyResponse_num(tvb, offset, pinfo, tree, di, drep); - di->private_data = type; + offset = witness_dissect_element_notifyResponse_num(tvb, offset, pinfo, tree, di, drep, &state->num); + switch(state->type) { + case WITNESS_NOTIFY_RESOURCE_CHANGE: + type_name = "RESOURCE_CHANGE"; + break; + case WITNESS_NOTIFY_CLIENT_MOVE: + type_name = "CLIENT_MOVE"; + break; + case WITNESS_NOTIFY_SHARE_MOVE: + type_name = "SHARE_MOVE"; + break; + case WITNESS_NOTIFY_IP_CHANGE: + type_name = "IP_CHANGE"; + break; + } + if (item) { + proto_item_append_text(item, + " %s (%u message%s)", + type_name, + state->num, + plurality(state->num, "", "s")); + proto_item_append_text(proto_item_get_parent_nth(item, 1), + " %s (%u message%s)", + type_name, + state->num, + plurality(state->num, "", "s")); + proto_item_append_text(proto_item_get_parent_nth(item, 2), + " %s (%u message%s)", + type_name, + state->num, + plurality(state->num, "", "s")); + proto_item_append_text(proto_item_get_parent_nth(item, 3), + " %s (%u message%s)", + type_name, + state->num, + plurality(state->num, "", "s")); + } + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, + " %s (%u message%s)", + type_name, + state->num, + plurality(state->num, "", "s")); + } + di->private_data = state; offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_notifyResponse_messages, NDR_POINTER_UNIQUE, "Pointer to Message Buffer (uint8)", @@ -265,6 +379,12 @@ witness_dissect_struct_notifyResponse(tvbuff_t *tvb _U_, int offset _U_, packet_ return offset; } static int +witness_dissect_element_IPaddrInfoList_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *num) +{ + offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_IPaddrInfoList_num, 0, num); + return offset; +} +static int witness_dissect_element_IPaddrInfoList_addr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = witness_dissect_struct_IPaddrInfo(tvb,offset,pinfo,tree,di,drep,hf_witness_witness_IPaddrInfoList_addr,0); @@ -286,8 +406,7 @@ witness_dissect_struct_IPaddrInfoList(tvbuff_t *tvb _U_, int offset _U_, packet_ } offset = witness_dissect_element_IPaddrInfoList_length(tvb, offset, pinfo, tree, di, drep); offset = witness_dissect_element_IPaddrInfoList_reserved(tvb, offset, pinfo, tree, di, drep); - num = tvb_get_letohl(tvb, offset); - offset = witness_dissect_element_IPaddrInfoList_num(tvb, offset, pinfo, tree, di, drep); + offset = witness_dissect_element_IPaddrInfoList_num(tvb, offset, pinfo, tree, di, drep, &num); for (i = 0; i < num; i++) { offset = witness_dissect_element_IPaddrInfoList_addr(tvb, offset, pinfo, tree, di, drep); } @@ -365,8 +484,10 @@ PIDL_dissect_ipv4address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr if (param & PIDL_SET_COL_INFO) { const char *ip = tvb_ip_to_str(pinfo->pool, tvb, offset); header_field_info *hf_info = proto_registrar_get_nth(hfindex); - proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip); - col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip); + if (strcmp(ip, "0.0.0.0") != 0) { + proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip); + col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip); + } } return offset + 4; } @@ -384,43 +505,28 @@ PIDL_dissect_ipv6address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr if (param & PIDL_SET_COL_INFO) { const char *ip = tvb_ip6_to_str(pinfo->pool, tvb, offset); header_field_info *hf_info = proto_registrar_get_nth(hfindex); - proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip); - col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip); + if (strcmp(ip, "::") != 0) { + proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip); + col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip); + } } return offset + 16; } - - -/* IDL: enum { */ -/* IDL: WITNESS_V1=0x00010001, */ -/* IDL: WITNESS_V2=0x00020000, */ -/* IDL: WITNESS_UNSPECIFIED_VERSION=0xFFFFFFFF, */ -/* IDL: } */ - -int -witness_dissect_enum_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) -{ - uint32_t parameter=0; - if (param) { - parameter = *param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); - if (param) { - *param = parameter; - } - return offset; -} - - /* IDL: enum { */ -/* IDL: WITNESS_STATE_UNKNOWN=0x0000, */ -/* IDL: WITNESS_STATE_AVAILABLE=0x0001, */ -/* IDL: WITNESS_STATE_UNAVAILABLE=0x00ff, */ +/* IDL: WITNESS_STATE_UNKNOWN=0x00, */ +/* IDL: WITNESS_STATE_AVAILABLE=0x01, */ +/* IDL: WITNESS_STATE_UNAVAILABLE=0xff, */ /* IDL: } */ - int witness_dissect_enum_interfaceInfo_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint16_t *param _U_) { + static const value_string state_vals[] = { + { WITNESS_STATE_UNKNOWN, "STATE_UNKNOWN" }, + { WITNESS_STATE_AVAILABLE, "AVAILABLE" }, + { WITNESS_STATE_UNAVAILABLE, "UNAVAILABLE" }, + { 0, NULL } + }; + const char *s = NULL; uint16_t parameter=0; if (param) { parameter = *param; @@ -429,16 +535,18 @@ witness_dissect_enum_interfaceInfo_state(tvbuff_t *tvb _U_, int offset _U_, pack if (param) { *param = parameter; } + s = val_to_str_wmem(pinfo->pool, parameter, VALS(state_vals), "unknown state: 0x%x"); + proto_item_append_text(proto_tree_get_parent(tree), " %s:", s); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", s); + } return offset; } - - /* IDL: bitmap { */ -/* IDL: WITNESS_INFO_IPv4_VALID = 0x00000001 , */ -/* IDL: WITNESS_INFO_IPv6_VALID = 0x00000002 , */ -/* IDL: WITNESS_INFO_WITNESS_IF = 0x00000004 , */ +/* IDL: WITNESS_INFO_IPv4_VALID = 0x01 , */ +/* IDL: WITNESS_INFO_IPv6_VALID = 0x02 , */ +/* IDL: WITNESS_INFO_WITNESS_IF = 0x04 , */ /* IDL: } */ - int witness_dissect_bitmap_interfaceInfo_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { @@ -451,24 +559,128 @@ witness_dissect_bitmap_interfaceInfo_flags(tvbuff_t *tvb _U_, int offset _U_, pa }; uint32_t flags; ALIGN_TO_4_BYTES; - item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, ett_witness_witness_interfaceInfo_flags, witness_witness_interfaceInfo_flags_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 & (~0x00000007)) { flags &= (~0x00000007); proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } + if (flags & 0x4) { + proto_item_append_text(proto_tree_get_parent(parent_tree), " WITNESS_IF"); + col_append_fstr(pinfo->cinfo, COL_INFO," WITNESS_IF"); + } + return offset; +} +static int +witness_dissect_element_Register_net_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = FALSE, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_net_name, FALSE, &nga, &data); + proto_item_append_text(tree, ": %s", data); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, " NetName[%s]", data); + } + return offset; +} +static int +witness_dissect_element_Register_ip_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = FALSE, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_ip_address, FALSE, &nga, &data); + proto_item_append_text(tree, ": %s", data); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, " IpAddress[%s]", data); + } + return offset; +} +static int +witness_dissect_element_RegisterEx_net_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = FALSE, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_net_name, FALSE, &nga, &data); + proto_item_append_text(tree, ": %s", data); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, " NetName[%s]", data); + } + return offset; +} +static int +witness_dissect_element_RegisterEx_share_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = FALSE, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_share_name, FALSE, &nga, &data); + proto_item_append_text(tree, ": %s", data); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, " ShareName[%s]", data); + } + return offset; +} +static int +witness_dissect_element_RegisterEx_ip_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = FALSE, }; + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_ip_address, FALSE, &nga, &data); + proto_item_append_text(tree, ": %s", data); + if (di->conformant_run == 0) { + col_append_fstr(pinfo->cinfo, COL_INFO, " IpAddress[%s]", data); + } + return offset; +} + +/* IDL: enum { */ +/* IDL: WITNESS_V1=0x00010001, */ +/* IDL: WITNESS_V2=0x00020000, */ +/* IDL: WITNESS_UNSPECIFIED_VERSION=0xFFFFFFFF, */ +/* IDL: } */ + +int +witness_dissect_enum_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) +{ + uint32_t parameter=0; + if (param) { + parameter = *param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); + if (param) { + *param = parameter; + } return offset; } +/* IDL: enum { */ +/* IDL: WITNESS_STATE_UNKNOWN=0x0000, */ +/* IDL: WITNESS_STATE_AVAILABLE=0x0001, */ +/* IDL: WITNESS_STATE_UNAVAILABLE=0x00ff, */ +/* IDL: } */ + + +/* IDL: bitmap { */ +/* IDL: WITNESS_INFO_IPv4_VALID = 0x00000001 , */ +/* IDL: WITNESS_INFO_IPv6_VALID = 0x00000002 , */ +/* IDL: WITNESS_INFO_WITNESS_IF = 0x00000004 , */ +/* IDL: } */ + + /* IDL: struct { */ /* IDL: [charset(UTF16)] [to_null(1)] uint16 group_name[260]; */ /* IDL: witness_version version; */ @@ -582,7 +794,11 @@ witness_dissect_element_interfaceList_interfaces(tvbuff_t *tvb _U_, int offset _ static int witness_dissect_element_interfaceList_interfaces_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_interfaceList_interfaces__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, witness_dissect_element_interfaceList_interfaces__); return offset; } @@ -684,22 +900,6 @@ witness_dissect_element_ResourceChange_length(tvbuff_t *tvb _U_, int offset _U_, return offset; } -static int -witness_dissect_element_ResourceChange_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = witness_dissect_enum_ResourceChange_type(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_ResourceChange_type, 0); - - return offset; -} - -static int -witness_dissect_element_ResourceChange_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_witness_witness_ResourceChange_name , 0); - - return offset; -} - int witness_dissect_struct_ResourceChange(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { @@ -857,14 +1057,6 @@ witness_dissect_element_IPaddrInfoList_reserved(tvbuff_t *tvb _U_, int offset _U return offset; } -static int -witness_dissect_element_IPaddrInfoList_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_IPaddrInfoList_num, 0); - - return offset; -} - /* IDL: [flag(LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_LITTLE_ENDIAN)] [nodiscriminant(1)] [public(1)] [switch_type(witness_notifyResponse_type)] union { */ /* IDL: [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] witness_ResourceChange resource_change; */ @@ -927,6 +1119,8 @@ witness_dissect_notifyResponse_message(tvbuff_t *tvb _U_, int offset _U_, packet tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_witness_witness_notifyResponse_message, &item, "witness_notifyResponse_message"); } + UNION_ALIGN_TO_4_BYTES; + switch(level) { case WITNESS_NOTIFY_RESOURCE_CHANGE: offset = witness_dissect_element_notifyResponse_message_resource_change(tvb, offset, pinfo, tree, di, drep); @@ -962,14 +1156,6 @@ witness_dissect_notifyResponse_message(tvbuff_t *tvb _U_, int offset _U_, packet /* IDL: } */ static int -witness_dissect_element_notifyResponse_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *type) -{ - offset = witness_dissect_enum_notifyResponse_type(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_notifyResponse_type, type); - - return offset; -} - -static int witness_dissect_element_notifyResponse_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_notifyResponse_length, 0); @@ -977,14 +1163,6 @@ witness_dissect_element_notifyResponse_length(tvbuff_t *tvb _U_, int offset _U_, return offset; } -static int -witness_dissect_element_notifyResponse_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_witness_witness_notifyResponse_num, 0); - - return offset; -} - /* IDL: bitmap { */ /* IDL: WITNESS_REGISTER_NONE = 0x00000000 , */ @@ -1103,17 +1281,6 @@ witness_dissect_element_Register_net_name(tvbuff_t *tvb _U_, int offset _U_, pac } static int -witness_dissect_element_Register_net_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_net_name, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -static int witness_dissect_element_Register_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_Register_ip_address_, NDR_POINTER_UNIQUE, "Pointer to Ip Address (uint16)",hf_witness_witness_Register_ip_address); @@ -1122,17 +1289,6 @@ witness_dissect_element_Register_ip_address(tvbuff_t *tvb _U_, int offset _U_, p } static int -witness_dissect_element_Register_ip_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_ip_address, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -static int witness_dissect_element_Register_client_computer_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_Register_client_computer_name_, NDR_POINTER_UNIQUE, "Pointer to Client Computer Name (uint16)",hf_witness_witness_Register_client_computer_name); @@ -1143,9 +1299,13 @@ witness_dissect_element_Register_client_computer_name(tvbuff_t *tvb _U_, int off static int witness_dissect_element_Register_client_computer_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_client_computer_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_Register_client_computer_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1322,17 +1482,6 @@ witness_dissect_element_RegisterEx_net_name(tvbuff_t *tvb _U_, int offset _U_, p } static int -witness_dissect_element_RegisterEx_net_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_net_name, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -static int witness_dissect_element_RegisterEx_share_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_RegisterEx_share_name_, NDR_POINTER_UNIQUE, "Pointer to Share Name (uint16)",hf_witness_witness_RegisterEx_share_name); @@ -1341,17 +1490,6 @@ witness_dissect_element_RegisterEx_share_name(tvbuff_t *tvb _U_, int offset _U_, } static int -witness_dissect_element_RegisterEx_share_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_share_name, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -static int witness_dissect_element_RegisterEx_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_RegisterEx_ip_address_, NDR_POINTER_UNIQUE, "Pointer to Ip Address (uint16)",hf_witness_witness_RegisterEx_ip_address); @@ -1360,17 +1498,6 @@ witness_dissect_element_RegisterEx_ip_address(tvbuff_t *tvb _U_, int offset _U_, } static int -witness_dissect_element_RegisterEx_ip_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_ip_address, false, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -static int witness_dissect_element_RegisterEx_client_computer_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, witness_dissect_element_RegisterEx_client_computer_name_, NDR_POINTER_UNIQUE, "Pointer to Client Computer Name (uint16)",hf_witness_witness_RegisterEx_client_computer_name); @@ -1381,9 +1508,13 @@ witness_dissect_element_RegisterEx_client_computer_name(tvbuff_t *tvb _U_, int o static int witness_dissect_element_RegisterEx_client_computer_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_client_computer_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_witness_witness_RegisterEx_client_computer_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; diff --git a/epan/dissectors/packet-dcerpc-wkssvc.c b/epan/dissectors/packet-dcerpc-wkssvc.c index 373a779ffa..9fa2abf011 100644 --- a/epan/dissectors/packet-dcerpc-wkssvc.c +++ b/epan/dissectors/packet-dcerpc-wkssvc.c @@ -674,7 +674,7 @@ static int wkssvc_dissect_element_NetWkstaEnumUsersCtr_user0_(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetWkstaEnumUsersCtr_user1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetWkstaEnumUsersCtr_user1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetWkstaEnumUsersInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int wkssvc_dissect_element_NetrWkstaUserInfo1101_other_domains(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrWkstaUserInfo1101_other_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrWkstaUserInfo_info0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -697,7 +697,7 @@ static int wkssvc_dissect_element_NetWkstaTransportCtr0_array__(tvbuff_t *tvb _U static int wkssvc_dissect_element_NetWkstaTransportCtr_ctr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetWkstaTransportCtr_ctr0_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetWkstaTransportInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int wkssvc_dissect_element_NetrUseInfo3_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrUseInfo3_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrUseInfo3_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -757,7 +757,7 @@ static int wkssvc_dissect_element_NetrUseEnumCtr_ctr1_(tvbuff_t *tvb _U_, int of static int wkssvc_dissect_element_NetrUseEnumCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrUseEnumCtr_ctr2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrUseEnumInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); -static int wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level); +static int wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level); static int wkssvc_dissect_element_NetrWorkstationStatistics_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrWorkstationStatistics_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); static int wkssvc_dissect_element_NetrWorkstationStatistics_unknown3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); @@ -1202,9 +1202,13 @@ wkssvc_dissect_element_lsa_String_name(tvbuff_t *tvb _U_, int offset _U_, packet static int wkssvc_dissect_element_lsa_String_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_lsa_String_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_lsa_String_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1271,9 +1275,13 @@ wkssvc_dissect_element_NetWkstaInfo100_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo100_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo100_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo100_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1290,9 +1298,13 @@ wkssvc_dissect_element_NetWkstaInfo100_domain_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo100_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1380,9 +1392,13 @@ wkssvc_dissect_element_NetWkstaInfo101_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo101_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1399,9 +1415,13 @@ wkssvc_dissect_element_NetWkstaInfo101_domain_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo101_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1434,9 +1454,13 @@ wkssvc_dissect_element_NetWkstaInfo101_lan_root(tvbuff_t *tvb _U_, int offset _U static int wkssvc_dissect_element_NetWkstaInfo101_lan_root_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1511,9 +1535,13 @@ wkssvc_dissect_element_NetWkstaInfo102_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo102_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1530,9 +1558,13 @@ wkssvc_dissect_element_NetWkstaInfo102_domain_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaInfo102_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -1565,9 +1597,13 @@ wkssvc_dissect_element_NetWkstaInfo102_lan_root(tvbuff_t *tvb _U_, int offset _U static int wkssvc_dissect_element_NetWkstaInfo102_lan_root_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4012,8 +4048,9 @@ wkssvc_dissect_NetWkstaInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetWkstaInfo, &item, "wkssvc_NetWkstaInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 100: @@ -4184,9 +4221,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo0_user_name(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrWkstaUserInfo0_user_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo0_user_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo0_user_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4246,7 +4287,11 @@ wkssvc_dissect_element_NetWkstaEnumUsersCtr0_user0(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaEnumUsersCtr0_user0_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetWkstaEnumUsersCtr0_user0__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetWkstaEnumUsersCtr0_user0__); return offset; } @@ -4309,9 +4354,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo1_user_name(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrWkstaUserInfo1_user_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_user_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_user_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4328,9 +4377,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo1_logon_domain(tvbuff_t *tvb _U_, int of static int wkssvc_dissect_element_NetrWkstaUserInfo1_logon_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_logon_domain, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_logon_domain, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4347,9 +4400,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo1_other_domains(tvbuff_t *tvb _U_, int o static int wkssvc_dissect_element_NetrWkstaUserInfo1_other_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_other_domains, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_other_domains, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4366,9 +4423,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo1_logon_server(tvbuff_t *tvb _U_, int of static int wkssvc_dissect_element_NetrWkstaUserInfo1_logon_server_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_logon_server, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1_logon_server, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4434,7 +4495,11 @@ wkssvc_dissect_element_NetWkstaEnumUsersCtr1_user1(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaEnumUsersCtr1_user1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetWkstaEnumUsersCtr1_user1__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetWkstaEnumUsersCtr1_user1__); return offset; } @@ -4529,8 +4594,9 @@ wkssvc_dissect_NetWkstaEnumUsersCtr(tvbuff_t *tvb _U_, int offset _U_, packet_in tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetWkstaEnumUsersCtr, &item, "wkssvc_NetWkstaEnumUsersCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -4561,9 +4627,9 @@ wkssvc_dissect_element_NetWkstaEnumUsersInfo_level(tvbuff_t *tvb _U_, int offset } static int -wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = wkssvc_dissect_NetWkstaEnumUsersCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsersInfo_ctr, *level); + offset = wkssvc_dissect_NetWkstaEnumUsersCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsersInfo_ctr, level); return offset; } @@ -4587,7 +4653,7 @@ wkssvc_dissect_struct_NetWkstaEnumUsersInfo(tvbuff_t *tvb _U_, int offset _U_, p offset = wkssvc_dissect_element_NetWkstaEnumUsersInfo_level(tvb, offset, pinfo, tree, di, drep, &level); - ALIGN_TO_5_BYTES; offset = wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvb, offset, pinfo, tree, di, drep, &level); + ALIGN_TO_5_BYTES; offset = wkssvc_dissect_element_NetWkstaEnumUsersInfo_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -4616,9 +4682,13 @@ wkssvc_dissect_element_NetrWkstaUserInfo1101_other_domains(tvbuff_t *tvb _U_, in static int wkssvc_dissect_element_NetrWkstaUserInfo1101_other_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1101_other_domains, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserInfo1101_other_domains, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4721,8 +4791,9 @@ wkssvc_dissect_NetrWkstaUserInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetrWkstaUserInfo, &item, "wkssvc_NetrWkstaUserInfo"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -4778,9 +4849,13 @@ wkssvc_dissect_element_NetWkstaTransportInfo0_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaTransportInfo0_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4797,9 +4872,13 @@ wkssvc_dissect_element_NetWkstaTransportInfo0_address(tvbuff_t *tvb _U_, int off static int wkssvc_dissect_element_NetWkstaTransportInfo0_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -4875,7 +4954,11 @@ wkssvc_dissect_element_NetWkstaTransportCtr0_array(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaTransportCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetWkstaTransportCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetWkstaTransportCtr0_array__); return offset; } @@ -4953,8 +5036,9 @@ wkssvc_dissect_NetWkstaTransportCtr(tvbuff_t *tvb _U_, int offset _U_, packet_in tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetWkstaTransportCtr, &item, "wkssvc_NetWkstaTransportCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -4981,9 +5065,9 @@ wkssvc_dissect_element_NetWkstaTransportInfo_level(tvbuff_t *tvb _U_, int offset } static int -wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = wkssvc_dissect_NetWkstaTransportCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetWkstaTransportInfo_ctr, *level); + offset = wkssvc_dissect_NetWkstaTransportCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetWkstaTransportInfo_ctr, level); return offset; } @@ -5007,7 +5091,7 @@ wkssvc_dissect_struct_NetWkstaTransportInfo(tvbuff_t *tvb _U_, int offset _U_, p offset = wkssvc_dissect_element_NetWkstaTransportInfo_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = wkssvc_dissect_element_NetWkstaTransportInfo_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -5037,9 +5121,13 @@ wkssvc_dissect_element_NetrUseInfo3_unknown1(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseInfo3_unknown1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo3_unknown1, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo3_unknown1, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5056,9 +5144,13 @@ wkssvc_dissect_element_NetrUseInfo3_unknown2(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseInfo3_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo3_unknown2, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo3_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5119,9 +5211,13 @@ wkssvc_dissect_element_NetrUseInfo2_local(tvbuff_t *tvb _U_, int offset _U_, pac static int wkssvc_dissect_element_NetrUseInfo2_local_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_local, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_local, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5138,9 +5234,13 @@ wkssvc_dissect_element_NetrUseInfo2_remote(tvbuff_t *tvb _U_, int offset _U_, pa static int wkssvc_dissect_element_NetrUseInfo2_remote_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_remote, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_remote, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5157,9 +5257,13 @@ wkssvc_dissect_element_NetrUseInfo2_password(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseInfo2_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5208,9 +5312,13 @@ wkssvc_dissect_element_NetrUseInfo2_user_name(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseInfo2_user_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_user_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_user_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5227,9 +5335,13 @@ wkssvc_dissect_element_NetrUseInfo2_domain_name(tvbuff_t *tvb _U_, int offset _U static int wkssvc_dissect_element_NetrUseInfo2_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_domain_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo2_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5302,9 +5414,13 @@ wkssvc_dissect_element_NetrUseInfo1_local(tvbuff_t *tvb _U_, int offset _U_, pac static int wkssvc_dissect_element_NetrUseInfo1_local_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_local, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_local, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5321,9 +5437,13 @@ wkssvc_dissect_element_NetrUseInfo1_remote(tvbuff_t *tvb _U_, int offset _U_, pa static int wkssvc_dissect_element_NetrUseInfo1_remote_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_remote, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_remote, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5340,9 +5460,13 @@ wkssvc_dissect_element_NetrUseInfo1_password(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseInfo1_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_password, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo1_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5438,9 +5562,13 @@ wkssvc_dissect_element_NetrUseInfo0_local(tvbuff_t *tvb _U_, int offset _U_, pac static int wkssvc_dissect_element_NetrUseInfo0_local_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo0_local, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo0_local, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5457,9 +5585,13 @@ wkssvc_dissect_element_NetrUseInfo0_remote(tvbuff_t *tvb _U_, int offset _U_, pa static int wkssvc_dissect_element_NetrUseInfo0_remote_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo0_remote, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseInfo0_remote, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -5581,8 +5713,9 @@ wkssvc_dissect_NetrUseGetInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetrUseGetInfoCtr, &item, "wkssvc_NetrUseGetInfoCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -5631,7 +5764,11 @@ wkssvc_dissect_element_NetrUseEnumCtr2_array(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseEnumCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrUseEnumCtr2_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrUseEnumCtr2_array__); return offset; } @@ -5700,7 +5837,11 @@ wkssvc_dissect_element_NetrUseEnumCtr1_array(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseEnumCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrUseEnumCtr1_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrUseEnumCtr1_array__); return offset; } @@ -5769,7 +5910,11 @@ wkssvc_dissect_element_NetrUseEnumCtr0_array(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseEnumCtr0_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrUseEnumCtr0_array__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrUseEnumCtr0_array__); return offset; } @@ -5881,8 +6026,9 @@ wkssvc_dissect_NetrUseEnumCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_wkssvc_wkssvc_NetrUseEnumCtr, &item, "wkssvc_NetrUseEnumCtr"); } + UNION_ALIGN_TO_5_BYTES; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_5_BYTES; + UNION_ALIGN_TO_5_BYTES; switch(level) { case 0: @@ -5917,9 +6063,9 @@ wkssvc_dissect_element_NetrUseEnumInfo_level(tvbuff_t *tvb _U_, int offset _U_, } static int -wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t *level) +wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, uint32_t level) { - offset = wkssvc_dissect_NetrUseEnumCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetrUseEnumInfo_ctr, *level); + offset = wkssvc_dissect_NetrUseEnumCtr(tvb, offset, pinfo, tree, di, drep, hf_wkssvc_wkssvc_NetrUseEnumInfo_ctr, level); return offset; } @@ -5943,7 +6089,7 @@ wkssvc_dissect_struct_NetrUseEnumInfo(tvbuff_t *tvb _U_, int offset _U_, packet_ offset = wkssvc_dissect_element_NetrUseEnumInfo_level(tvb, offset, pinfo, tree, di, drep, &level); - offset = wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvb, offset, pinfo, tree, di, drep, &level); + offset = wkssvc_dissect_element_NetrUseEnumInfo_ctr(tvb, offset, pinfo, tree, di, drep, level); proto_item_set_len(item, offset-old_offset); @@ -6648,7 +6794,11 @@ wkssvc_dissect_element_ComputerNamesCtr_computer_name(tvbuff_t *tvb _U_, int off static int wkssvc_dissect_element_ComputerNamesCtr_computer_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_ComputerNamesCtr_computer_name__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_ComputerNamesCtr_computer_name__); return offset; } @@ -6703,9 +6853,13 @@ wkssvc_dissect_element_NetWkstaGetInfo_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaGetInfo_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6780,9 +6934,13 @@ wkssvc_dissect_element_NetWkstaSetInfo_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetWkstaSetInfo_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6878,9 +7036,13 @@ wkssvc_dissect_element_NetWkstaEnumUsers_server_name(tvbuff_t *tvb _U_, int offs static int wkssvc_dissect_element_NetWkstaEnumUsers_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -6999,9 +7161,13 @@ wkssvc_dissect_element_NetrWkstaUserGetInfo_unknown(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrWkstaUserGetInfo_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserGetInfo_unknown, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserGetInfo_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7076,9 +7242,13 @@ wkssvc_dissect_element_NetrWkstaUserSetInfo_unknown(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrWkstaUserSetInfo_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserSetInfo_unknown, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaUserSetInfo_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7174,9 +7344,13 @@ wkssvc_dissect_element_NetWkstaTransportEnum_server_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetWkstaTransportEnum_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7295,9 +7469,13 @@ wkssvc_dissect_element_NetrWkstaTransportAdd_server_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrWkstaTransportAdd_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportAdd_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportAdd_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7393,9 +7571,13 @@ wkssvc_dissect_element_NetrWkstaTransportDel_server_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrWkstaTransportDel_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportDel_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportDel_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7412,9 +7594,13 @@ wkssvc_dissect_element_NetrWkstaTransportDel_transport_name(tvbuff_t *tvb _U_, i static int wkssvc_dissect_element_NetrWkstaTransportDel_transport_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportDel_transport_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWkstaTransportDel_transport_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7472,9 +7658,13 @@ wkssvc_dissect_element_NetrUseAdd_server_name(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseAdd_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseAdd_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseAdd_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7570,9 +7760,13 @@ wkssvc_dissect_element_NetrUseGetInfo_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrUseGetInfo_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseGetInfo_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseGetInfo_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7589,9 +7783,13 @@ wkssvc_dissect_element_NetrUseGetInfo_use_name(tvbuff_t *tvb _U_, int offset _U_ static int wkssvc_dissect_element_NetrUseGetInfo_use_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseGetInfo_use_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseGetInfo_use_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7669,9 +7867,13 @@ wkssvc_dissect_element_NetrUseDel_server_name(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrUseDel_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseDel_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseDel_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7688,9 +7890,13 @@ wkssvc_dissect_element_NetrUseDel_use_name(tvbuff_t *tvb _U_, int offset _U_, pa static int wkssvc_dissect_element_NetrUseDel_use_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseDel_use_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseDel_use_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7748,9 +7954,13 @@ wkssvc_dissect_element_NetrUseEnum_server_name(tvbuff_t *tvb _U_, int offset _U_ static int wkssvc_dissect_element_NetrUseEnum_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseEnum_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUseEnum_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7869,9 +8079,13 @@ wkssvc_dissect_element_NetrMessageBufferSend_server_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrMessageBufferSend_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7888,9 +8102,13 @@ wkssvc_dissect_element_NetrMessageBufferSend_message_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrMessageBufferSend_message_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_message_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_message_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7907,9 +8125,13 @@ wkssvc_dissect_element_NetrMessageBufferSend_message_sender_name(tvbuff_t *tvb _ static int wkssvc_dissect_element_NetrMessageBufferSend_message_sender_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_message_sender_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrMessageBufferSend_message_sender_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -7926,7 +8148,11 @@ wkssvc_dissect_element_NetrMessageBufferSend_message_buffer(tvbuff_t *tvb _U_, i static int wkssvc_dissect_element_NetrMessageBufferSend_message_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrMessageBufferSend_message_buffer__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrMessageBufferSend_message_buffer__); return offset; } @@ -7997,9 +8223,13 @@ wkssvc_dissect_element_NetrWorkstationStatisticsGet_server_name(tvbuff_t *tvb _U static int wkssvc_dissect_element_NetrWorkstationStatisticsGet_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWorkstationStatisticsGet_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWorkstationStatisticsGet_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8016,9 +8246,13 @@ wkssvc_dissect_element_NetrWorkstationStatisticsGet_unknown2(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetrWorkstationStatisticsGet_unknown2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWorkstationStatisticsGet_unknown2, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrWorkstationStatisticsGet_unknown2, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8115,9 +8349,13 @@ wkssvc_dissect_element_NetrLogonDomainNameAdd_domain_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrLogonDomainNameAdd_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrLogonDomainNameAdd_domain_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrLogonDomainNameAdd_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8161,9 +8399,13 @@ wkssvc_dissect_element_NetrLogonDomainNameDel_domain_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrLogonDomainNameDel_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrLogonDomainNameDel_domain_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrLogonDomainNameDel_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8207,9 +8449,13 @@ wkssvc_dissect_element_NetrJoinDomain_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrJoinDomain_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8226,9 +8472,13 @@ wkssvc_dissect_element_NetrJoinDomain_domain_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrJoinDomain_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_domain_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8245,9 +8495,13 @@ wkssvc_dissect_element_NetrJoinDomain_account_ou(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrJoinDomain_account_ou_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_account_ou, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_account_ou, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8264,9 +8518,13 @@ wkssvc_dissect_element_NetrJoinDomain_Account(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrJoinDomain_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_Account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8283,9 +8541,13 @@ wkssvc_dissect_element_NetrJoinDomain_unknown(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrJoinDomain_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_unknown, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8352,9 +8614,13 @@ wkssvc_dissect_element_NetrUnjoinDomain_server_name(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrUnjoinDomain_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8371,9 +8637,13 @@ wkssvc_dissect_element_NetrUnjoinDomain_Account(tvbuff_t *tvb _U_, int offset _U static int wkssvc_dissect_element_NetrUnjoinDomain_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8390,9 +8660,13 @@ wkssvc_dissect_element_NetrUnjoinDomain_password(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrUnjoinDomain_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8453,9 +8727,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain_server_name(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetrRenameMachineInDomain_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8472,9 +8750,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain_NewMachineName(tvbuff_t *tvb _U static int wkssvc_dissect_element_NetrRenameMachineInDomain_NewMachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_NewMachineName, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_NewMachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8491,9 +8773,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain_Account(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrRenameMachineInDomain_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8510,9 +8796,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain_password(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrRenameMachineInDomain_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain_password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8576,9 +8866,13 @@ wkssvc_dissect_element_NetrValidateName_server_name(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrValidateName_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8595,9 +8889,13 @@ wkssvc_dissect_element_NetrValidateName_name(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrValidateName_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8614,9 +8912,13 @@ wkssvc_dissect_element_NetrValidateName_Account(tvbuff_t *tvb _U_, int offset _U static int wkssvc_dissect_element_NetrValidateName_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8633,9 +8935,13 @@ wkssvc_dissect_element_NetrValidateName_Password(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrValidateName_Password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_Password, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName_Password, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8699,9 +9005,13 @@ wkssvc_dissect_element_NetrGetJoinInformation_server_name(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrGetJoinInformation_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinInformation_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinInformation_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8726,9 +9036,13 @@ wkssvc_dissect_element_NetrGetJoinInformation_name_buffer_(tvbuff_t *tvb _U_, in static int wkssvc_dissect_element_NetrGetJoinInformation_name_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinInformation_name_buffer, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinInformation_name_buffer, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8798,9 +9112,13 @@ wkssvc_dissect_element_NetrGetJoinableOus_server_name(tvbuff_t *tvb _U_, int off static int wkssvc_dissect_element_NetrGetJoinableOus_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8817,9 +9135,13 @@ wkssvc_dissect_element_NetrGetJoinableOus_domain_name(tvbuff_t *tvb _U_, int off static int wkssvc_dissect_element_NetrGetJoinableOus_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_domain_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8836,9 +9158,13 @@ wkssvc_dissect_element_NetrGetJoinableOus_Account(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrGetJoinableOus_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8855,9 +9181,13 @@ wkssvc_dissect_element_NetrGetJoinableOus_unknown(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrGetJoinableOus_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_unknown, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_unknown, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8890,7 +9220,11 @@ wkssvc_dissect_element_NetrGetJoinableOus_ous(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrGetJoinableOus_ous_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrGetJoinableOus_ous__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrGetJoinableOus_ous__); return offset; } @@ -8914,9 +9248,13 @@ wkssvc_dissect_element_NetrGetJoinableOus_ous___(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrGetJoinableOus_ous____(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_ous, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus_ous, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8979,9 +9317,13 @@ wkssvc_dissect_element_NetrJoinDomain2_server_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrJoinDomain2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -8998,9 +9340,13 @@ wkssvc_dissect_element_NetrJoinDomain2_domain_name(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrJoinDomain2_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9017,9 +9363,13 @@ wkssvc_dissect_element_NetrJoinDomain2_account_name(tvbuff_t *tvb _U_, int offse static int wkssvc_dissect_element_NetrJoinDomain2_account_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_account_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_account_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9036,9 +9386,13 @@ wkssvc_dissect_element_NetrJoinDomain2_admin_account(tvbuff_t *tvb _U_, int offs static int wkssvc_dissect_element_NetrJoinDomain2_admin_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9121,9 +9475,13 @@ wkssvc_dissect_element_NetrUnjoinDomain2_server_name(tvbuff_t *tvb _U_, int offs static int wkssvc_dissect_element_NetrUnjoinDomain2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9140,9 +9498,13 @@ wkssvc_dissect_element_NetrUnjoinDomain2_account(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrUnjoinDomain2_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain2_account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrUnjoinDomain2_account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9219,9 +9581,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9238,9 +9604,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName(tvbuff_t *tvb _ static int wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9257,9 +9627,13 @@ wkssvc_dissect_element_NetrRenameMachineInDomain2_Account(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrRenameMachineInDomain2_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9339,9 +9713,13 @@ wkssvc_dissect_element_NetrValidateName2_server_name(tvbuff_t *tvb _U_, int offs static int wkssvc_dissect_element_NetrValidateName2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9358,9 +9736,13 @@ wkssvc_dissect_element_NetrValidateName2_name(tvbuff_t *tvb _U_, int offset _U_, static int wkssvc_dissect_element_NetrValidateName2_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9377,9 +9759,13 @@ wkssvc_dissect_element_NetrValidateName2_Account(tvbuff_t *tvb _U_, int offset _ static int wkssvc_dissect_element_NetrValidateName2_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrValidateName2_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9459,9 +9845,13 @@ wkssvc_dissect_element_NetrGetJoinableOus2_server_name(tvbuff_t *tvb _U_, int of static int wkssvc_dissect_element_NetrGetJoinableOus2_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9478,9 +9868,13 @@ wkssvc_dissect_element_NetrGetJoinableOus2_domain_name(tvbuff_t *tvb _U_, int of static int wkssvc_dissect_element_NetrGetJoinableOus2_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_domain_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_domain_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9497,9 +9891,13 @@ wkssvc_dissect_element_NetrGetJoinableOus2_Account(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrGetJoinableOus2_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_Account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9548,7 +9946,11 @@ wkssvc_dissect_element_NetrGetJoinableOus2_ous(tvbuff_t *tvb _U_, int offset _U_ static int wkssvc_dissect_element_NetrGetJoinableOus2_ous_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, wkssvc_dissect_element_NetrGetJoinableOus2_ous__); + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, wkssvc_dissect_element_NetrGetJoinableOus2_ous__); return offset; } @@ -9572,9 +9974,13 @@ wkssvc_dissect_element_NetrGetJoinableOus2_ous___(tvbuff_t *tvb _U_, int offset static int wkssvc_dissect_element_NetrGetJoinableOus2_ous____(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_ous, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrGetJoinableOus2_ous, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9637,9 +10043,13 @@ wkssvc_dissect_element_NetrAddAlternateComputerName_server_name(tvbuff_t *tvb _U static int wkssvc_dissect_element_NetrAddAlternateComputerName_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9656,9 +10066,13 @@ wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName(tvbu static int wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9675,9 +10089,13 @@ wkssvc_dissect_element_NetrAddAlternateComputerName_Account(tvbuff_t *tvb _U_, i static int wkssvc_dissect_element_NetrAddAlternateComputerName_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9757,9 +10175,13 @@ wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name(tvbuff_t *tvb static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9776,9 +10198,13 @@ wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRem static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9795,9 +10221,13 @@ wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account(tvbuff_t *tvb _U_ static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9877,9 +10307,13 @@ wkssvc_dissect_element_NetrSetPrimaryComputername_server_name(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetrSetPrimaryComputername_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9896,9 +10330,13 @@ wkssvc_dissect_element_NetrSetPrimaryComputername_primary_name(tvbuff_t *tvb _U_ static int wkssvc_dissect_element_NetrSetPrimaryComputername_primary_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_primary_name, false, &data); + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_primary_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9915,9 +10353,13 @@ wkssvc_dissect_element_NetrSetPrimaryComputername_Account(tvbuff_t *tvb _U_, int static int wkssvc_dissect_element_NetrSetPrimaryComputername_Account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_Account, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrSetPrimaryComputername_Account, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; @@ -9997,9 +10439,13 @@ wkssvc_dissect_element_NetrEnumerateComputerNames_server_name(tvbuff_t *tvb _U_, static int wkssvc_dissect_element_NetrEnumerateComputerNames_server_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - char *data; + char *data = NULL; + struct ndr_generic_array nga = { .is_conformant = false, }; + + offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrEnumerateComputerNames_server_name, false, &data); + offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga); + offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_wkssvc_wkssvc_NetrEnumerateComputerNames_server_name, false, &nga, &data); proto_item_append_text(tree, ": %s", data); return offset; -- 2.11.4.GIT