diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-09-19 04:14:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-09-19 04:14:53 +0000 |
commit | a86c5f7cae7ec9a3398300555a0b644689d946a1 (patch) | |
tree | 39fe4b107c71174fd1e8a8ceb9a4d2aa14116248 /epan/dissectors/packet-dcerpc-browser.c | |
parent | Releasing progress-linux version 4.2.6-1~progress7.99u1. (diff) | |
download | wireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.tar.xz wireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.zip |
Merging upstream version 4.4.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-dcerpc-browser.c')
-rw-r--r-- | epan/dissectors/packet-dcerpc-browser.c | 2790 |
1 files changed, 2010 insertions, 780 deletions
diff --git a/epan/dissectors/packet-dcerpc-browser.c b/epan/dissectors/packet-dcerpc-browser.c index 107583a5..ee3a611a 100644 --- a/epan/dissectors/packet-dcerpc-browser.c +++ b/epan/dissectors/packet-dcerpc-browser.c @@ -1,1170 +1,2400 @@ -/* packet-dcerpc-browser.c - * Routines for DCERPC Browser packet disassembly - * Copyright 2001, Ronnie Sahlberg - * - * Wireshark - Network traffic analyzer - * By Gerald Combs <gerald@wireshark.org> - * Copyright 1998 Gerald Combs - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -/* The IDL file for this interface can be extracted by grepping for idl - * in capitals. - */ +/* DO NOT EDIT + This file was automatically generated by Pidl + from browser.idl and browser.cnf. + + Pidl is a perl based IDL compiler for DCE/RPC idl files. + It is maintained by the Samba team, not the Wireshark team. + Instructions on how to download and install Pidl can be + found at https://wiki.wireshark.org/Pidl +*/ -#include "config.h" +#include "config.h" +#include <string.h> +#include <wsutil/array.h> #include <epan/packet.h> -#include <epan/exceptions.h> +#include <epan/tfs.h> #include "packet-dcerpc.h" -#include "packet-dcerpc-browser.h" #include "packet-dcerpc-nt.h" #include "packet-windows-common.h" - +#include "packet-dcerpc-browser.h" void proto_register_dcerpc_browser(void); void proto_reg_handoff_dcerpc_browser(void); -static int proto_dcerpc_browser = -1; -static int hf_browser_opnum = -1; -static int hf_browser_rc = -1; -static int hf_browser_unknown_long = -1; -static int hf_browser_unknown_hyper = -1; -static int hf_browser_unknown_bytes = -1; -static int hf_browser_unknown_string = -1; - +/* Ett declarations */ +static int ett_dcerpc_browser; +static int ett_browser_BrowserrSrvInfo100Ctr; +static int ett_browser_BrowserrSrvInfo101Ctr; +static int ett_browser_BrowserrSrvInfoUnion; +static int ett_browser_BrowserrSrvInfo; +static int ett_browser_TYPE_1; +static int ett_browser_TYPE_2; +static int ett_browser_TYPE_3; +static int ett_browser_TYPE_4; + + +/* Header field declarations */ +static int hf_browser_BrowserrDebugCall_unknown1; +static int hf_browser_BrowserrDebugCall_unknown2; +static int hf_browser_BrowserrDebugCall_unknown3; +static int hf_browser_BrowserrDebugTrace_unknown1; +static int hf_browser_BrowserrDebugTrace_unknown2; +static int hf_browser_BrowserrQueryEmulatedDomains_unknown1; +static int hf_browser_BrowserrQueryEmulatedDomains_unknown2; +static int hf_browser_BrowserrQueryOtherDomains_info; +static int hf_browser_BrowserrQueryOtherDomains_server_unc; +static int hf_browser_BrowserrQueryOtherDomains_total_entries; +static int hf_browser_BrowserrQueryStatistics_unknown1; +static int hf_browser_BrowserrQueryStatistics_unknown2; +static int hf_browser_BrowserrResetNetlogonState_unknown; +static int hf_browser_BrowserrResetStatistics_unknown; +static int hf_browser_BrowserrServerEnumEx_info; +static int hf_browser_BrowserrServerEnumEx_unknown1; +static int hf_browser_BrowserrServerEnumEx_unknown2; +static int hf_browser_BrowserrServerEnumEx_unknown3; +static int hf_browser_BrowserrServerEnumEx_unknown4; +static int hf_browser_BrowserrServerEnumEx_unknown5; +static int hf_browser_BrowserrServerEnumEx_unknown6; +static int hf_browser_BrowserrServerEnumEx_unknown7; +static int hf_browser_BrowserrServerEnumEx_unknown8; +static int hf_browser_BrowserrServerEnum_info; +static int hf_browser_BrowserrServerEnum_unknown1; +static int hf_browser_BrowserrServerEnum_unknown2; +static int hf_browser_BrowserrServerEnum_unknown3; +static int hf_browser_BrowserrServerEnum_unknown4; +static int hf_browser_BrowserrServerEnum_unknown5; +static int hf_browser_BrowserrServerEnum_unknown6; +static int hf_browser_BrowserrServerEnum_unknown7; +static int hf_browser_BrowserrServerEnum_unknown8; +static int hf_browser_BrowserrSetNetlogonState_unknown1; +static int hf_browser_BrowserrSetNetlogonState_unknown2; +static int hf_browser_BrowserrSetNetlogonState_unknown3; +static int hf_browser_BrowserrSetNetlogonState_unknown4; +static int hf_browser_BrowserrSrvInfo100Ctr_entries; +static int hf_browser_BrowserrSrvInfo100Ctr_entries_read; +static int hf_browser_BrowserrSrvInfo101Ctr_entries; +static int hf_browser_BrowserrSrvInfo101Ctr_entries_read; +static int hf_browser_BrowserrSrvInfoUnion_info100; +static int hf_browser_BrowserrSrvInfoUnion_info101; +static int hf_browser_BrowserrSrvInfo_info; +static int hf_browser_BrowserrSrvInfo_level; +static int hf_browser_NetrBrowserStatisticsClear_unknown; +static int hf_browser_NetrBrowserStatisticsGet_unknown1; +static int hf_browser_NetrBrowserStatisticsGet_unknown2; +static int hf_browser_NetrBrowserStatisticsGet_unknown3; +static int hf_browser_TYPE_1_unknown; +static int hf_browser_TYPE_2_unknown1; +static int hf_browser_TYPE_2_unknown10; +static int hf_browser_TYPE_2_unknown11; +static int hf_browser_TYPE_2_unknown12; +static int hf_browser_TYPE_2_unknown13; +static int hf_browser_TYPE_2_unknown14; +static int hf_browser_TYPE_2_unknown15; +static int hf_browser_TYPE_2_unknown16; +static int hf_browser_TYPE_2_unknown17; +static int hf_browser_TYPE_2_unknown18; +static int hf_browser_TYPE_2_unknown19; +static int hf_browser_TYPE_2_unknown2; +static int hf_browser_TYPE_2_unknown3; +static int hf_browser_TYPE_2_unknown4; +static int hf_browser_TYPE_2_unknown5; +static int hf_browser_TYPE_2_unknown6; +static int hf_browser_TYPE_2_unknown7; +static int hf_browser_TYPE_2_unknown8; +static int hf_browser_TYPE_2_unknown9; +static int hf_browser_TYPE_3_unknown1; +static int hf_browser_TYPE_3_unknown10; +static int hf_browser_TYPE_3_unknown11; +static int hf_browser_TYPE_3_unknown12; +static int hf_browser_TYPE_3_unknown13; +static int hf_browser_TYPE_3_unknown14; +static int hf_browser_TYPE_3_unknown15; +static int hf_browser_TYPE_3_unknown16; +static int hf_browser_TYPE_3_unknown2; +static int hf_browser_TYPE_3_unknown3; +static int hf_browser_TYPE_3_unknown4; +static int hf_browser_TYPE_3_unknown5; +static int hf_browser_TYPE_3_unknown6; +static int hf_browser_TYPE_3_unknown7; +static int hf_browser_TYPE_3_unknown8; +static int hf_browser_TYPE_3_unknown9; +static int hf_browser_TYPE_4_unknown1; +static int hf_browser_TYPE_4_unknown2; +static int hf_browser_opnum; +static int hf_browser_werror; + +static int proto_dcerpc_browser; +/* Version information */ -static gint ett_dcerpc_browser = -1; +static e_guid_t uuid_dcerpc_browser = { + 0x6bffd098, 0xa112, 0x3610, + { 0x98, 0x33, 0x01, 0x28, 0x92, 0x02, 0x01, 0x62 } +}; +static uint16_t ver_dcerpc_browser = 0; + +static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries_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 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_); +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_); +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_); +static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries_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 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_); +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_); +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_); +static int browser_dissect_element_BrowserrSrvInfoUnion_info100(tvbuff_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_info100_(tvbuff_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_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_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_); +static int browser_dissect_element_TYPE_2_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 browser_dissect_element_TYPE_2_unknown4(tvbuff_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_unknown5(tvbuff_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_unknown6(tvbuff_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_unknown7(tvbuff_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_unknown8(tvbuff_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_unknown9(tvbuff_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_unknown10(tvbuff_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_unknown11(tvbuff_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_unknown12(tvbuff_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_unknown13(tvbuff_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_unknown14(tvbuff_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_unknown15(tvbuff_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_unknown16(tvbuff_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_unknown17(tvbuff_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_unknown18(tvbuff_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_unknown19(tvbuff_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_3_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_3_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 browser_dissect_element_TYPE_3_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 browser_dissect_element_TYPE_3_unknown4(tvbuff_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_3_unknown5(tvbuff_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_3_unknown6(tvbuff_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_3_unknown7(tvbuff_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_3_unknown8(tvbuff_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_3_unknown9(tvbuff_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_3_unknown10(tvbuff_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_3_unknown11(tvbuff_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_3_unknown12(tvbuff_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_3_unknown13(tvbuff_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_3_unknown14(tvbuff_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_3_unknown15(tvbuff_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_3_unknown16(tvbuff_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_4_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_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_); +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_); +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_); +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_); +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_); +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_); +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_); +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_); +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_); +static int browser_dissect_element_BrowserrServerEnum_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 browser_dissect_element_BrowserrServerEnum_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 browser_dissect_element_BrowserrServerEnum_unknown4(tvbuff_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_BrowserrServerEnum_unknown5(tvbuff_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_BrowserrServerEnum_unknown5_(tvbuff_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_BrowserrServerEnum_unknown6(tvbuff_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_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_); +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_); +static int browser_dissect_element_BrowserrServerEnum_unknown8(tvbuff_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_BrowserrServerEnum_unknown8_(tvbuff_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_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_); +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_); +static int browser_dissect_element_BrowserrDebugCall_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 browser_dissect_element_BrowserrDebugCall_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 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_); +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_); +static int browser_dissect_element_BrowserrQueryOtherDomains_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 browser_dissect_element_BrowserrQueryOtherDomains_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 browser_dissect_element_BrowserrQueryOtherDomains_total_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 browser_dissect_element_BrowserrQueryOtherDomains_total_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 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_); +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_); +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_); +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_); +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_); +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_); +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_); +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_); +static int browser_dissect_element_BrowserrQueryStatistics_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 browser_dissect_element_BrowserrQueryStatistics_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 browser_dissect_element_BrowserrQueryStatistics_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 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_); +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_); +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_); +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_); +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_); +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_); +static int browser_dissect_element_NetrBrowserStatisticsGet_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 browser_dissect_element_NetrBrowserStatisticsGet_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 browser_dissect_element_NetrBrowserStatisticsGet_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 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_); +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_); +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_); +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_); +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_); +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_); +static int browser_dissect_element_BrowserrSetNetlogonState_unknown4(tvbuff_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_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_); +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_); +static int browser_dissect_element_BrowserrQueryEmulatedDomains_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 browser_dissect_element_BrowserrQueryEmulatedDomains_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 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_); +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_); +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_); +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_); +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_); +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_); +static int browser_dissect_element_BrowserrServerEnumEx_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 browser_dissect_element_BrowserrServerEnumEx_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 browser_dissect_element_BrowserrServerEnumEx_unknown4(tvbuff_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_BrowserrServerEnumEx_unknown5(tvbuff_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_BrowserrServerEnumEx_unknown5_(tvbuff_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_BrowserrServerEnumEx_unknown6(tvbuff_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_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_); +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_); +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_); +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_); + + +/* IDL: struct { */ +/* IDL: uint32 entries_read; */ +/* IDL: [size_is(entries_read)] [unique(1)] srvsvc_NetSrvInfo100 *entries; */ +/* IDL: } */ static int -dissect_browser_long_pointer(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrSrvInfo100Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, - di->hf_index, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo100Ctr_entries_read, 0); + return offset; } +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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfo100Ctr_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (srvsvc_NetSrvInfo100)",hf_browser_BrowserrSrvInfo100Ctr_entries); + return offset; +} -/* - IDL [ uuid(6bffd098-a112-3610-9833-012892020162), - IDL version(0.0), - IDL implicit_handle(handle_t rpc_binding) - IDL ] interface browser - IDL { -*/ +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__); -static e_guid_t uuid_dcerpc_browser = { - 0x6bffd098, 0xa112, 0x3610, - { 0x98, 0x33, 0x01, 0x28, 0x92, 0x02, 0x01, 0x62 } -}; + return offset; +} -static guint16 ver_dcerpc_browser = 0; +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 = srvsvc_dissect_struct_NetSrvInfo100(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo100Ctr_entries, 0); + return offset; +} -/* - IDL typedef struct { - IDL long element_7; - IDL [size_is(element_7)] [unique] byte *element_8; - IDL } TYPE_4; -*/ -static int -dissect_browser_TYPE_4_data(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +int +browser_dissect_struct_BrowserrSrvInfo100Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_) { - guint32 len; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_5_BYTES; - if(di->conformant_run){ - /* this call is to make wireshark eat the array header for the conformant run */ - offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, NULL); + old_offset = offset; - return offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_browser_BrowserrSrvInfo100Ctr); } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &len); - proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len, - ENC_NA); - offset += len; + offset = browser_dissect_element_BrowserrSrvInfo100Ctr_entries_read(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_BrowserrSrvInfo100Ctr_entries(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 entries_read; */ +/* IDL: [size_is(entries_read)] [unique(1)] srvsvc_NetSrvInfo101 *entries; */ +/* IDL: } */ + static int -dissect_browser_TYPE_4(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrSrvInfo101Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo101Ctr_entries_read, 0); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_4_data, NDR_POINTER_UNIQUE, - "unknown TYPE_4", -1); + return offset; +} + +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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfo101Ctr_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (srvsvc_NetSrvInfo101)",hf_browser_BrowserrSrvInfo101Ctr_entries); return offset; } +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__); + + return offset; +} -/* - IDL typedef struct { - IDL long element_5; - IDL [size_is(element_5)] [unique] byte *element_6; - IDL } TYPE_3; -*/ static int -dissect_browser_TYPE_3_data(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - guint32 len; + offset = srvsvc_dissect_struct_NetSrvInfo101(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo100Ctr_entries, 0); - if(di->conformant_run){ - /* this call is to make wireshark eat the array header for the conformant run */ - offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, NULL); + return offset; +} + +int +browser_dissect_struct_BrowserrSrvInfo101Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_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; - return 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_browser_BrowserrSrvInfo101Ctr); } - /* this is really the length of the encoded data */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &len); - proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len, - ENC_NA); - offset += len; + offset = browser_dissect_element_BrowserrSrvInfo101Ctr_entries_read(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_BrowserrSrvInfo101Ctr_entries(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(100)] [case(100)] [unique(1)] BrowserrSrvInfo100Ctr *info100; */ +/* IDL: [case(101)] [case(101)] [unique(1)] BrowserrSrvInfo101Ctr *info101; */ +/* IDL: [default] ; */ +/* IDL: } */ + static int -dissect_browser_TYPE_3(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrSrvInfoUnion_info100(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfoUnion_info100_, NDR_POINTER_UNIQUE, "Pointer to Info100 (BrowserrSrvInfo100Ctr)",hf_browser_BrowserrSrvInfoUnion_info100); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_3_data, NDR_POINTER_UNIQUE, - "unknown TYPE_3", -1); + return offset; +} + +static int +browser_dissect_element_BrowserrSrvInfoUnion_info100_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = browser_dissect_struct_BrowserrSrvInfo100Ctr(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrSrvInfoUnion_info100,0); return offset; } +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_) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSrvInfoUnion_info101_, NDR_POINTER_UNIQUE, "Pointer to Info101 (BrowserrSrvInfo101Ctr)",hf_browser_BrowserrSrvInfoUnion_info101); + return offset; +} -/* - IDL typedef [switch_type(long)] union { - IDL [case(100)] [unique] TYPE_3 *element_3; - IDL [case(101)] [unique] TYPE_4 *element_4; - IDL } TYPE_2; -*/ static int -dissect_browser_TYPE_2(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - guint32 level; + offset = browser_dissect_struct_BrowserrSrvInfo101Ctr(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrSrvInfoUnion_info101,0); - /* this is really the union switch arm */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &level); + return offset; +} - ALIGN_TO_4_BYTES; +static int +browser_dissect_BrowserrSrvInfoUnion(tvbuff_t *tvb _U_, int offset _U_, packet_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_browser_BrowserrSrvInfoUnion, &item, "BrowserrSrvInfoUnion"); + } - switch(level){ - case 100: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_3, NDR_POINTER_UNIQUE, - "unknown TYPE_3", -1); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + ALIGN_TO_5_BYTES; + + switch(level) { + case 100: + offset = browser_dissect_element_BrowserrSrvInfoUnion_info100(tvb, offset, pinfo, tree, di, drep); break; - case 101: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_4, NDR_POINTER_UNIQUE, - "unknown TYPE_4", -1); + + case 101: + offset = browser_dissect_element_BrowserrSrvInfoUnion_info101(tvb, offset, pinfo, tree, di, drep); + break; + + default: break; } + proto_item_set_len(item, offset-old_offset); + return offset; } +/* IDL: struct { */ +/* IDL: uint32 level; */ +/* IDL: [switch_is(level)] BrowserrSrvInfoUnion info; */ +/* IDL: } */ -/* - IDL typedef struct { - IDL long element_1; - IDL TYPE_2 element_2; - IDL } TYPE_1; -*/ static int -dissect_browser_TYPE_1(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo_level, *level); - offset = dissect_browser_TYPE_2(tvb, offset, pinfo, tree, di, drep); + return offset; +} + +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) +{ + offset = browser_dissect_BrowserrSrvInfoUnion(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSrvInfo_info, *level); return offset; } +int +browser_dissect_struct_BrowserrSrvInfo(tvbuff_t *tvb _U_, int offset _U_, packet_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; + 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_browser_BrowserrSrvInfo); + } + + 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); + + + 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: hyper unknown; */ +/* IDL: } */ -/* - IDL long BrowserrServerEnum( - IDL [in] [unique] [string] wchar_t *element_9, - IDL [in] [unique] [string] wchar_t *element_10, - IDL [in] [unique] [string] wchar_t *element_11, - IDL [in,out] [ref] TYPE_1 *element_12, - IDL [in] long element_13, - IDL [out] long element_14, - IDL [in] long element_15, - IDL [in] [unique] [string] wchar_t *element_16, - IDL [in,out] [unique] long *element_17 - IDL ); -*/ static int -dissect_browser_browserr_server_enum_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_1_unknown, NULL); + + return offset; +} + +int +browser_dissect_struct_TYPE_1(tvbuff_t *tvb _U_, int offset _U_, packet_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; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + old_offset = offset; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 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_browser_TYPE_1); + } - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_1, NDR_POINTER_REF, - "unknown TYPE_1", -1); + offset = browser_dissect_element_TYPE_1_unknown(tvb, offset, pinfo, tree, di, drep); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + proto_item_set_len(item, offset-old_offset); - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_long_pointer, NDR_POINTER_UNIQUE, - "unknown long", hf_browser_unknown_long); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } return offset; } + + +/* IDL: struct { */ +/* IDL: TYPE_1 unknown1; */ +/* IDL: TYPE_1 unknown2; */ +/* IDL: TYPE_1 unknown3; */ +/* IDL: int32 unknown4; */ +/* IDL: int32 unknown5; */ +/* IDL: int32 unknown6; */ +/* IDL: int32 unknown7; */ +/* IDL: int32 unknown8; */ +/* IDL: int32 unknown9; */ +/* IDL: int32 unknown10; */ +/* IDL: int32 unknown11; */ +/* IDL: int32 unknown12; */ +/* IDL: int32 unknown13; */ +/* IDL: int32 unknown14; */ +/* IDL: int32 unknown15; */ +/* IDL: int32 unknown16; */ +/* IDL: int32 unknown17; */ +/* IDL: int32 unknown18; */ +/* IDL: TYPE_1 unknown19; */ +/* IDL: } */ + static int -dissect_browser_browserr_server_enum_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_1, NDR_POINTER_REF, - "unknown TYPE_1", -1); + offset = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_2_unknown1,0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_long_pointer, NDR_POINTER_UNIQUE, - "unknown long", hf_browser_unknown_long); +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_) +{ + offset = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_2_unknown2,0); + + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); +static int +browser_dissect_element_TYPE_2_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 = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_2_unknown3,0); return offset; } -/* - IDL long BrowserrDebugCall( - IDL [in] [unique] [string] wchar_t *element_18, - IDL [in] long element_19, - IDL [in] long element_20 - IDL ); -*/ static int -dissect_browser_browserr_debug_call_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_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 = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown4, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_2_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_browser_TYPE_2_unknown5, 0); return offset; } + static int -dissect_browser_browserr_debug_call_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_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 = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown6, 0); return offset; } +static int +browser_dissect_element_TYPE_2_unknown7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown7, 0); + + return offset; +} -/* - IDL long BrowserrQueryOtherDomains( - IDL [in] [unique] [string] wchar_t *element_21, - IDL [in,out] [ref] TYPE_1 *element_22, - IDL [out] long element_23 - IDL ); -*/ static int -dissect_browser_browserr_query_other_domains_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown8, 0); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_1, NDR_POINTER_REF, - "unknown TYPE_1", -1); + return offset; +} + +static int +browser_dissect_element_TYPE_2_unknown9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown9, 0); return offset; } + static int -dissect_browser_browserr_query_other_domains_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown10, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + return offset; +} + +static int +browser_dissect_element_TYPE_2_unknown11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown11, 0); return offset; } +static int +browser_dissect_element_TYPE_2_unknown12(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown12, 0); + + return offset; +} -/* - IDL long BrowserrResetNetlogonState( - IDL [in] [unique] [string] wchar_t *element_24 - IDL ); -*/ static int -dissect_browser_browserr_reset_netlogon_state_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown13(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown13, 0); return offset; } + static int -dissect_browser_browserr_reset_netlogon_state_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown14(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown14, 0); return offset; } +static int +browser_dissect_element_TYPE_2_unknown15(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown15, 0); + + return offset; +} + +static int +browser_dissect_element_TYPE_2_unknown16(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown16, 0); + + return offset; +} -/* - IDL long BrowserrDebugTrace( - IDL [in] [unique] [string] wchar_t *element_25, - IDL [in] [string] char element_26 - IDL ); -*/ static int -dissect_browser_browserr_debug_trace_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown17(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown17, 0); - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_REF, "unknown string", - hf_browser_unknown_string, 0); + return offset; +} + +static int +browser_dissect_element_TYPE_2_unknown18(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_2_unknown18, 0); return offset; } + static int -dissect_browser_browserr_debug_trace_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_2_unknown19(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_2_unknown19,0); return offset; } +int +browser_dissect_struct_TYPE_2(tvbuff_t *tvb _U_, int offset _U_, packet_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_browser_TYPE_2); + } + + offset = browser_dissect_element_TYPE_2_unknown1(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown2(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown3(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown4(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown5(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown6(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown7(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown8(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown9(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown10(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown11(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown12(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown13(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown14(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown15(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown16(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown17(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown18(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_2_unknown19(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: TYPE_1 unknown1; */ +/* IDL: TYPE_1 unknown2; */ +/* IDL: TYPE_1 unknown3; */ +/* IDL: int32 unknown4; */ +/* IDL: int32 unknown5; */ +/* IDL: int32 unknown6; */ +/* IDL: TYPE_1 unknown7; */ +/* IDL: int32 unknown8; */ +/* IDL: int32 unknown9; */ +/* IDL: int32 unknown10; */ +/* IDL: int32 unknown11; */ +/* IDL: int32 unknown12; */ +/* IDL: int32 unknown13; */ +/* IDL: int32 unknown14; */ +/* IDL: int32 unknown15; */ +/* IDL: int32 unknown16; */ +/* IDL: } */ -/* - IDL typedef struct { - IDL TYPE_6 element_27; - IDL TYPE_6 element_28; - IDL TYPE_6 element_29; - IDL long element_30; - IDL long element_31; - IDL long element_32; - IDL long element_33; - IDL long element_34; - IDL long element_35; - IDL long element_36; - IDL long element_37; - IDL long element_38; - IDL long element_39; - IDL long element_40; - IDL long element_41; - IDL long element_42; - IDL long element_43; - IDL long element_44; - IDL TYPE_6 element_45; - IDL } TYPE_5; - IDL - IDL typedef struct { - IDL hyper element_46; - IDL } TYPE_6; -*/ static int -dissect_browser_TYPE_5(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_3_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 = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); + offset = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_3_unknown1,0); - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); + return offset; +} - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); +static int +browser_dissect_element_TYPE_3_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 = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_3_unknown2,0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_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 = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_3_unknown3,0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_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_browser_TYPE_3_unknown4, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_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_browser_TYPE_3_unknown5, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_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_browser_TYPE_3_unknown6, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_unknown7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = browser_dissect_struct_TYPE_1(tvb,offset,pinfo,tree,di,drep,hf_browser_TYPE_3_unknown7,0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_unknown8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown8, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_TYPE_3_unknown9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown9, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); +static int +browser_dissect_element_TYPE_3_unknown10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown10, 0); return offset; } +static int +browser_dissect_element_TYPE_3_unknown11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown11, 0); + + return offset; +} -/* - IDL long BrowserrQueryStatistics( - IDL [in] [unique] [string] wchar_t *element_47, - IDL [out] [ref] TYPE_5 **element_48 - IDL ); -*/ static int -dissect_browser_browserr_query_statistics_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_3_unknown12(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown12, 0); return offset; } + static int -dissect_browser_browserr_query_statistics_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_3_unknown13(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_5, NDR_POINTER_UNIQUE, - "unknown TYPE_5", -1); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown13, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + return offset; +} + +static int +browser_dissect_element_TYPE_3_unknown14(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown14, 0); return offset; } +static int +browser_dissect_element_TYPE_3_unknown15(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown15, 0); + + return offset; +} -/* - IDL long BrowserrResetStatistics( - IDL [in] [unique] [string] wchar_t *element_49 - IDL ); -*/ static int -dissect_browser_browserr_reset_statistics_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_3_unknown16(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_3_unknown16, 0); return offset; } + +int +browser_dissect_struct_TYPE_3(tvbuff_t *tvb _U_, int offset _U_, packet_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_browser_TYPE_3); + } + + offset = browser_dissect_element_TYPE_3_unknown1(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown2(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown3(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown4(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown5(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown6(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown7(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown8(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown9(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown10(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown11(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown12(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown13(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown14(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown15(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_3_unknown16(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: int32 unknown1; */ +/* IDL: [size_is(unknown82)] [unique(1)] uint8 *unknown2; */ +/* IDL: } */ + static int -dissect_browser_browserr_reset_statistics_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_TYPE_4_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 = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_4_unknown1, 0); return offset; } +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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_TYPE_4_unknown2_, NDR_POINTER_UNIQUE, "Pointer to Unknown2 (uint8)",hf_browser_TYPE_4_unknown2); + + return offset; +} -/* - IDL long NetrBrowserStatisticsClear( - IDL [in] [unique] [string] wchar_t *element_49 - IDL ); -*/ static int -dissect_browser_netr_browser_statistics_clear_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_TYPE_4_unknown2__); return offset; } + static int -dissect_browser_netr_browser_statistics_clear_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_browser_TYPE_4_unknown2, 0); return offset; } +int +browser_dissect_struct_TYPE_4(tvbuff_t *tvb _U_, int offset _U_, packet_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_browser_TYPE_4); + } + + offset = browser_dissect_element_TYPE_4_unknown1(tvb, offset, pinfo, tree, di, drep); + + offset = browser_dissect_element_TYPE_4_unknown2(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 typedef struct { - IDL TYPE_6 element_59; - IDL TYPE_6 element_60; - IDL TYPE_6 element_61; - IDL long element_62; - IDL long element_63; - IDL long element_64; - IDL TYPE_6 element_65; - IDL long element_66; - IDL long element_67; - IDL long element_68; - IDL long element_69; - IDL long element_70; - IDL long element_71; - IDL long element_72; - IDL long element_73; - IDL long element_74; - IDL } TYPE_11; -*/ static int -dissect_browser_TYPE_11(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrServerEnum_unknown1); - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); + return offset; +} - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); +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; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown2_, NDR_POINTER_UNIQUE, "Pointer to Unknown2 (uint16)",hf_browser_BrowserrServerEnum_unknown2); - offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_hyper, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +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; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown2, false, &data); + proto_item_append_text(tree, ": %s", data); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown3_, NDR_POINTER_UNIQUE, "Pointer to Unknown3 (uint16)",hf_browser_BrowserrServerEnum_unknown3); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +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; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown3, false, &data); + proto_item_append_text(tree, ": %s", data); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_BrowserrServerEnum_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, browser_dissect_element_BrowserrServerEnum_info_, NDR_POINTER_REF, "Pointer to Info (BrowserrSrvInfo)",hf_browser_BrowserrServerEnum_info); return offset; } -/* - IDL typedef struct { - IDL long element_57; - IDL [size_is(element_57)] [unique] TYPE_11 *element_58; - IDL } TYPE_10; -*/ static int -dissect_browser_TYPE_11_array(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrServerEnum_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_ucarray(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_11); + offset = browser_dissect_struct_BrowserrSrvInfo(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrServerEnum_info,0); return offset; } static int -dissect_browser_TYPE_10(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrServerEnum_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 = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrServerEnum_unknown4, 0); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_11_array, NDR_POINTER_UNIQUE, - "unknown TYPE_11_ARRAY", -1); + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnum_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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown5_, NDR_POINTER_REF, "Pointer to Unknown5 (int32)",hf_browser_BrowserrServerEnum_unknown5); return offset; } +static int +browser_dissect_element_BrowserrServerEnum_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_browser_BrowserrServerEnum_unknown5, 0); + + return offset; +} -/* - IDL typedef struct { - IDL long element_55; - IDL [size_is(element_55)] [unique] byte *element_56; - IDL } TYPE_9; -*/ static int -dissect_browser_TYPE_9_data(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrServerEnum_unknown6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - guint32 len; + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrServerEnum_unknown6, 0); + + return offset; +} - if(di->conformant_run){ - /* this call is to make wireshark eat the array header for the conformant run */ - offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, NULL); +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown7_, NDR_POINTER_UNIQUE, "Pointer to Unknown7 (uint16)",hf_browser_BrowserrServerEnum_unknown7); - return offset; - } + return offset; +} - /* this is really the length of the encoded data */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &len); +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; - proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len, - ENC_NA); - offset += len; + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnum_unknown7, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } + static int -dissect_browser_TYPE_9(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrServerEnum_unknown8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnum_unknown8_, NDR_POINTER_UNIQUE, "Pointer to Unknown8 (int32)",hf_browser_BrowserrServerEnum_unknown8); + + return offset; +} - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_9_data, NDR_POINTER_UNIQUE, - "unknown TYPE_9", -1); +static int +browser_dissect_element_BrowserrServerEnum_unknown8_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrServerEnum_unknown8, 0); return offset; } +/* IDL: WERROR BrowserrServerEnum( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown2, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown3, */ +/* IDL: [in] [out] [ref] BrowserrSrvInfo *info, */ +/* IDL: [in] int32 unknown4, */ +/* IDL: [out] [ref] int32 *unknown5, */ +/* IDL: [in] int32 unknown6, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown7, */ +/* IDL: [in] [out] [unique(1)] int32 *unknown8 */ +/* IDL: ); */ -/* - IDL typedef [switch_type(long)] union { - IDL [case(100)] [unique] TYPE_9 *element_53; - IDL [case(101)] [unique] TYPE_10 *element_54; - IDL } TYPE_8; -*/ static int -dissect_browser_TYPE_8(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_BrowserrServerEnum_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - guint32 level; + uint32_t status; - /* this is really the union switch arm */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &level); + di->dcerpc_procedure_name="BrowserrServerEnum"; + offset = browser_dissect_element_BrowserrServerEnum_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); - ALIGN_TO_4_BYTES; + offset = browser_dissect_element_BrowserrServerEnum_unknown5(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); - switch(level){ - case 100: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_9, NDR_POINTER_UNIQUE, - "unknown TYPE_9", -1); - break; - case 101: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_10, NDR_POINTER_UNIQUE, - "unknown TYPE_10", -1); - break; - } + offset = browser_dissect_element_BrowserrServerEnum_unknown8(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_browser_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 +browser_dissect_BrowserrServerEnum_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="BrowserrServerEnum"; + offset = browser_dissect_element_BrowserrServerEnum_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown3(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown4(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown6(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown7(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnum_unknown8(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} -/* - IDL typedef struct { - IDL long element_51; - IDL TYPE_8 element_52; - IDL } TYPE_7; -*/ static int -dissect_browser_TYPE_7(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrDebugCall_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrDebugCall_unknown1); - offset = dissect_browser_TYPE_8(tvb, offset, pinfo, tree, di, drep); + return 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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugCall_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } +static int +browser_dissect_element_BrowserrDebugCall_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_browser_BrowserrDebugCall_unknown2, 0); + + return offset; +} -/* - IDL long NetrBrowserStatisticsGet( - IDL [in] [unique] [string] wchar_t *element_75, - IDL [in] long element_76, - IDL [in,out] [ref] TYPE_7 *element_77 - IDL ); -*/ static int -dissect_browser_netr_browser_statistics_get_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrDebugCall_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 = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrDebugCall_unknown3, 0); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_7, NDR_POINTER_REF, - "unknown TYPE_7", -1); +/* IDL: WERROR BrowserrDebugCall( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [in] int32 unknown2, */ +/* IDL: [in] int32 unknown3 */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrDebugCall_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="BrowserrDebugCall"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_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 -dissect_browser_netr_browser_statistics_get_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_BrowserrDebugCall_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 = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_7, NDR_POINTER_REF, - "unknown TYPE_7", -1); + di->dcerpc_procedure_name="BrowserrDebugCall"; + offset = browser_dissect_element_BrowserrDebugCall_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrDebugCall_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrDebugCall_unknown3(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryOtherDomains_server_unc_, NDR_POINTER_UNIQUE, "Pointer to Server Unc (uint16)",hf_browser_BrowserrQueryOtherDomains_server_unc); return offset; } +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryOtherDomains_server_unc, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} -/* - IDL long BrowserrSetNetlogonState( - IDL [in] [unique] [string] wchar_t *element_78, - IDL [in] [ref] [string] wchar_t *element_79, - IDL [in] [unique] [string] wchar_t *element_80, - IDL [in] long element_81 - IDL ); -*/ static int -dissect_browser_browserr_set_netlogon_state_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrQueryOtherDomains_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_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryOtherDomains_info_, NDR_POINTER_REF, "Pointer to Info (BrowserrSrvInfo)",hf_browser_BrowserrQueryOtherDomains_info); - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_REF, "unknown string", - hf_browser_unknown_string, 0); + return offset; +} - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); +static int +browser_dissect_element_BrowserrQueryOtherDomains_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 = browser_dissect_struct_BrowserrSrvInfo(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrQueryOtherDomains_info,0); + + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_element_BrowserrQueryOtherDomains_total_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_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryOtherDomains_total_entries_, NDR_POINTER_REF, "Pointer to Total Entries (uint32)",hf_browser_BrowserrQueryOtherDomains_total_entries); return offset; } + static int -dissect_browser_browserr_set_netlogon_state_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrQueryOtherDomains_total_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_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrQueryOtherDomains_total_entries, 0); return offset; } +/* IDL: WERROR BrowserrQueryOtherDomains( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_unc, */ +/* IDL: [in] [out] [ref] BrowserrSrvInfo *info, */ +/* IDL: [out] [ref] uint32 *total_entries */ +/* IDL: ); */ +static int +browser_dissect_BrowserrQueryOtherDomains_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="BrowserrQueryOtherDomains"; + offset = browser_dissect_element_BrowserrQueryOtherDomains_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + + offset = browser_dissect_element_BrowserrQueryOtherDomains_total_entries(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_browser_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 typedef struct { - IDL long element_82; - IDL [size_is(element_82)] [unique] byte *element_83; - IDL } TYPE_12; -*/ static int -dissect_browser_TYPE_12_data(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_BrowserrQueryOtherDomains_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { - guint32 len; + di->dcerpc_procedure_name="BrowserrQueryOtherDomains"; + offset = browser_dissect_element_BrowserrQueryOtherDomains_server_unc(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrQueryOtherDomains_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} - if(di->conformant_run){ - /* this call is to make wireshark eat the array header for the conformant run */ - offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, NULL); +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrResetNetlogonState_unknown_, NDR_POINTER_UNIQUE, "Pointer to Unknown (uint16)",hf_browser_BrowserrResetNetlogonState_unknown); - return offset; - } + return offset; +} - /* this is really the length of the encoded data */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, &len); +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; - proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len, - ENC_NA); - offset += len; + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetNetlogonState_unknown, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } + +/* IDL: WERROR BrowserrResetNetlogonState( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown */ +/* IDL: ); */ + static int -dissect_browser_TYPE_12(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_BrowserrResetNetlogonState_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_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + uint32_t status; + + di->dcerpc_procedure_name="BrowserrResetNetlogonState"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_werror, &status); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_12_data, NDR_POINTER_UNIQUE, - "unknown TYPE_12", -1); + 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 +browser_dissect_BrowserrResetNetlogonState_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="BrowserrResetNetlogonState"; + offset = browser_dissect_element_BrowserrResetNetlogonState_unknown(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrDebugTrace_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrDebugTrace_unknown1); + + return offset; +} -/* - IDL long BrowserrQueryEmulatedDomains( - IDL [in] [unique] [string] wchar_t *element_84, - IDL [in,out] [ref] TYPE_12 *element_85 - ); -*/ static int -dissect_browser_browserr_query_emulated_domains_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + char *data; - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_12, NDR_POINTER_REF, - "unknown TYPE_12", -1); + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrDebugTrace_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } + static int -dissect_browser_browserr_query_emulated_domains_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +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_) { - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_12, NDR_POINTER_REF, - "unknown TYPE_12", -1); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrDebugTrace_unknown2_, NDR_POINTER_REF, "Pointer to Unknown2 (uint8)",hf_browser_BrowserrDebugTrace_unknown2); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_browser_BrowserrDebugTrace_unknown2, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } +/* IDL: WERROR BrowserrDebugTrace( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [in] [ref] uint8 *unknown2 */ +/* IDL: ); */ -/* - IDL long BrowserrServerEnumEx( - IDL [in] [unique] [string] wchar_t *element_86, - IDL [in] [unique] [string] wchar_t *element_87, - IDL [in] [unique] [string] wchar_t *element_88, - IDL [in,out] [ref] TYPE_1 *element_89, - IDL [in] long element_90, - IDL [out] long element_91, - IDL [in] long element_92, - IDL [in] [unique] [string] wchar_t *element_93, - IDL [in] [unique] [string] wchar_t *element_94 - IDL ); -*/ static int -dissect_browser_browserr_server_enum_ex_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_BrowserrDebugTrace_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_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + uint32_t status; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + di->dcerpc_procedure_name="BrowserrDebugTrace"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_werror, &status); - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + 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_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_1, NDR_POINTER_REF, - "unknown TYPE_1", -1); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); +static int +browser_dissect_BrowserrDebugTrace_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="BrowserrDebugTrace"; + offset = browser_dissect_element_BrowserrDebugTrace_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrDebugTrace_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryStatistics_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrQueryStatistics_unknown1); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); +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; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, di, drep, - NDR_POINTER_UNIQUE, "unknown string", - hf_browser_unknown_string, 0); + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryStatistics_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); return offset; } + static int -dissect_browser_browserr_server_enum_ex_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - dcerpc_info *di, guint8 *drep) +browser_dissect_element_BrowserrQueryStatistics_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_pointer(tvb, offset, pinfo, tree, di, drep, - dissect_browser_TYPE_1, NDR_POINTER_REF, - "unknown TYPE_1", -1); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryStatistics_unknown2_, NDR_POINTER_REF, "Pointer to Unknown2 (TYPE_2)",hf_browser_BrowserrQueryStatistics_unknown2); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_unknown_long, NULL); + return offset; +} - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, - hf_browser_rc, NULL); +static int +browser_dissect_element_BrowserrQueryStatistics_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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryStatistics_unknown2__, NDR_POINTER_UNIQUE, "Pointer to Unknown2 (TYPE_2)",hf_browser_BrowserrQueryStatistics_unknown2); return offset; } +static int +browser_dissect_element_BrowserrQueryStatistics_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 = browser_dissect_struct_TYPE_2(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrQueryStatistics_unknown2,0); + return offset; +} -/* - IDL } -*/ -static dcerpc_sub_dissector dcerpc_browser_dissectors[] = { - { BROWSER_BROWSERR_SERVER_ENUM, "BrowserrServerEnum", - dissect_browser_browserr_server_enum_rqst, - dissect_browser_browserr_server_enum_reply }, - { BROWSER_BROWSERR_DEBUG_CALL, "BrowserrDebugCall", - dissect_browser_browserr_debug_call_rqst, - dissect_browser_browserr_debug_call_reply }, - { BROWSER_BROWSERR_QUERY_OTHER_DOMAINS, - "BrowserrQueryOtherDomains", - dissect_browser_browserr_query_other_domains_rqst, - dissect_browser_browserr_query_other_domains_reply }, - { BROWSER_BROWSERR_RESET_NETLOGON_STATE, - "BrowserrResetNetlogonState", - dissect_browser_browserr_reset_netlogon_state_rqst, - dissect_browser_browserr_reset_netlogon_state_reply }, - { BROWSER_BROWSERR_DEBUG_TRACE, - "BrowserrDebugTrace", - dissect_browser_browserr_debug_trace_rqst, - dissect_browser_browserr_debug_trace_reply }, - { BROWSER_BROWSERR_QUERY_STATISTICS, - "BrowserrQueryStatistics", - dissect_browser_browserr_query_statistics_rqst, - dissect_browser_browserr_query_statistics_reply }, - { BROWSER_BROWSERR_RESET_STATISTICS, - "BrowserrResetStatistics", - dissect_browser_browserr_reset_statistics_rqst, - dissect_browser_browserr_reset_statistics_reply }, - { BROWSER_NETR_BROWSER_STATISTICS_CLEAR, - "NetrBrowserStatisticsClear", - dissect_browser_netr_browser_statistics_clear_rqst, - dissect_browser_netr_browser_statistics_clear_reply }, - { BROWSER_NETR_BROWSER_STATISTICS_GET, - "NetrBrowserStatisticsGet", - dissect_browser_netr_browser_statistics_get_rqst, - dissect_browser_netr_browser_statistics_get_reply }, - { BROWSER_BROWSERR_SET_NETLOGON_STATE, - "BrowserrSetNetlogonState", - dissect_browser_browserr_set_netlogon_state_rqst, - dissect_browser_browserr_set_netlogon_state_reply }, - { BROWSER_BROWSERR_QUERY_EMULATED_DOMAINS, - "BrowserrQueryEmulatedDomains", - dissect_browser_browserr_query_emulated_domains_rqst, - dissect_browser_browserr_query_emulated_domains_reply }, - { BROWSER_BROWSERR_SERVER_ENUM_EX, - "BrowserrServerEnumEx", - dissect_browser_browserr_server_enum_ex_rqst, - dissect_browser_browserr_server_enum_ex_reply }, - - {0, NULL, NULL, NULL } -}; +/* IDL: WERROR BrowserrQueryStatistics( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [out] [ref] TYPE_2 **unknown2 */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrQueryStatistics_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="BrowserrQueryStatistics"; + offset = browser_dissect_element_BrowserrQueryStatistics_unknown2(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_browser_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 +browser_dissect_BrowserrQueryStatistics_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="BrowserrQueryStatistics"; + offset = browser_dissect_element_BrowserrQueryStatistics_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrResetStatistics_unknown_, NDR_POINTER_UNIQUE, "Pointer to Unknown (uint16)",hf_browser_BrowserrResetStatistics_unknown); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrResetStatistics_unknown, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +/* IDL: WERROR BrowserrResetStatistics( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrResetStatistics_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="BrowserrResetStatistics"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_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 +browser_dissect_BrowserrResetStatistics_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="BrowserrResetStatistics"; + offset = browser_dissect_element_BrowserrResetStatistics_unknown(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_NetrBrowserStatisticsClear_unknown_, NDR_POINTER_UNIQUE, "Pointer to Unknown (uint16)",hf_browser_NetrBrowserStatisticsClear_unknown); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsClear_unknown, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +/* IDL: WERROR NetrBrowserStatisticsClear( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown */ +/* IDL: ); */ + +static int +browser_dissect_NetrBrowserStatisticsClear_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="NetrBrowserStatisticsClear"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_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 +browser_dissect_NetrBrowserStatisticsClear_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="NetrBrowserStatisticsClear"; + offset = browser_dissect_element_NetrBrowserStatisticsClear_unknown(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_NetrBrowserStatisticsGet_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_NetrBrowserStatisticsGet_unknown1); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_NetrBrowserStatisticsGet_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +browser_dissect_element_NetrBrowserStatisticsGet_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_browser_NetrBrowserStatisticsGet_unknown2, 0); + + return offset; +} + +static int +browser_dissect_element_NetrBrowserStatisticsGet_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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_NetrBrowserStatisticsGet_unknown3_, NDR_POINTER_REF, "Pointer to Unknown3 (BrowserrSrvInfo)",hf_browser_NetrBrowserStatisticsGet_unknown3); + + return offset; +} + +static int +browser_dissect_element_NetrBrowserStatisticsGet_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 = browser_dissect_struct_BrowserrSrvInfo(tvb,offset,pinfo,tree,di,drep,hf_browser_NetrBrowserStatisticsGet_unknown3,0); + + return offset; +} + +/* IDL: WERROR NetrBrowserStatisticsGet( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [in] int32 unknown2, */ +/* IDL: [in] [out] [ref] BrowserrSrvInfo *unknown3 */ +/* IDL: ); */ + +static int +browser_dissect_NetrBrowserStatisticsGet_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="NetrBrowserStatisticsGet"; + offset = browser_dissect_element_NetrBrowserStatisticsGet_unknown3(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_browser_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 +browser_dissect_NetrBrowserStatisticsGet_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="NetrBrowserStatisticsGet"; + offset = browser_dissect_element_NetrBrowserStatisticsGet_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_NetrBrowserStatisticsGet_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_NetrBrowserStatisticsGet_unknown3(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSetNetlogonState_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrSetNetlogonState_unknown1); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSetNetlogonState_unknown2_, NDR_POINTER_REF, "Pointer to Unknown2 (uint16)",hf_browser_BrowserrSetNetlogonState_unknown2); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown2, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrSetNetlogonState_unknown3_, NDR_POINTER_UNIQUE, "Pointer to Unknown3 (uint16)",hf_browser_BrowserrSetNetlogonState_unknown3); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrSetNetlogonState_unknown3, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} -void -proto_register_dcerpc_browser(void) +static int +browser_dissect_element_BrowserrSetNetlogonState_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) { -static hf_register_info hf[] = { + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_BrowserrSetNetlogonState_unknown4, 0); + + return offset; +} + +/* IDL: WERROR BrowserrSetNetlogonState( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [charset(UTF16)] [in] [ref] uint16 *unknown2, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown3, */ +/* IDL: [in] int32 unknown4 */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrSetNetlogonState_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="BrowserrSetNetlogonState"; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_browser_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; +} - { &hf_browser_opnum, { - "Operation", "rpc_browser.opnum", FT_UINT16, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, +static int +browser_dissect_BrowserrSetNetlogonState_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="BrowserrSetNetlogonState"; + offset = browser_dissect_element_BrowserrSetNetlogonState_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrSetNetlogonState_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrSetNetlogonState_unknown3(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrSetNetlogonState_unknown4(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} - { &hf_browser_rc, { - "Return code", "rpc_browser.rc", FT_UINT32, BASE_HEX | BASE_EXT_STRING, - &NT_errors_ext, 0x0, "Browser return code", HFILL }}, +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryEmulatedDomains_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrQueryEmulatedDomains_unknown1); - { &hf_browser_unknown_long, { - "Unknown long", "rpc_browser.unknown.long", FT_UINT32, BASE_HEX, - NULL, 0x0, "Unknown long. If you know what this is, contact wireshark developers.", HFILL }}, + return offset; +} - { &hf_browser_unknown_hyper, { - "Unknown hyper", "rpc_browser.unknown.hyper", FT_UINT64, BASE_HEX, - NULL, 0x0, "Unknown hyper. If you know what this is, contact wireshark developers.", HFILL }}, +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; - { &hf_browser_unknown_bytes, { - "Unknown bytes", "rpc_browser.unknown.bytes", FT_BYTES, BASE_NONE, - NULL, 0x0, "Unknown bytes. If you know what this is, contact wireshark developers.", HFILL }}, + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrQueryEmulatedDomains_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); - { &hf_browser_unknown_string, { - "Unknown string", "rpc_browser.unknown.string", FT_STRING, BASE_NONE, - NULL, 0x0, "Unknown string. If you know what this is, contact wireshark developers.", HFILL }} + return offset; +} +static int +browser_dissect_element_BrowserrQueryEmulatedDomains_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_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrQueryEmulatedDomains_unknown2_, NDR_POINTER_REF, "Pointer to Unknown2 (TYPE_4)",hf_browser_BrowserrQueryEmulatedDomains_unknown2); + + return offset; +} + +static int +browser_dissect_element_BrowserrQueryEmulatedDomains_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 = browser_dissect_struct_TYPE_4(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrQueryEmulatedDomains_unknown2,0); + + return offset; +} + +/* IDL: WERROR BrowserrQueryEmulatedDomains( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [in] [out] [ref] TYPE_4 *unknown2 */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrQueryEmulatedDomains_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="BrowserrQueryEmulatedDomains"; + offset = browser_dissect_element_BrowserrQueryEmulatedDomains_unknown2(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_browser_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 +browser_dissect_BrowserrQueryEmulatedDomains_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="BrowserrQueryEmulatedDomains"; + offset = browser_dissect_element_BrowserrQueryEmulatedDomains_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrQueryEmulatedDomains_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown1_, NDR_POINTER_UNIQUE, "Pointer to Unknown1 (uint16)",hf_browser_BrowserrServerEnumEx_unknown1); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown1, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown2_, NDR_POINTER_UNIQUE, "Pointer to Unknown2 (uint16)",hf_browser_BrowserrServerEnumEx_unknown2); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown2, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown3_, NDR_POINTER_UNIQUE, "Pointer to Unknown3 (uint16)",hf_browser_BrowserrServerEnumEx_unknown3); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown3, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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, browser_dissect_element_BrowserrServerEnumEx_info_, NDR_POINTER_REF, "Pointer to Info (BrowserrSrvInfo)",hf_browser_BrowserrServerEnumEx_info); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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 = browser_dissect_struct_BrowserrSrvInfo(tvb,offset,pinfo,tree,di,drep,hf_browser_BrowserrServerEnumEx_info,0); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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_browser_BrowserrServerEnumEx_unknown4, 0); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown5_, NDR_POINTER_REF, "Pointer to Unknown5 (int32)",hf_browser_BrowserrServerEnumEx_unknown5); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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_browser_BrowserrServerEnumEx_unknown5, 0); + + return offset; +} + +static int +browser_dissect_element_BrowserrServerEnumEx_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_browser_BrowserrServerEnumEx_unknown6, 0); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown7_, NDR_POINTER_UNIQUE, "Pointer to Unknown7 (uint16)",hf_browser_BrowserrServerEnumEx_unknown7); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown7, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +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_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, browser_dissect_element_BrowserrServerEnumEx_unknown8_, NDR_POINTER_UNIQUE, "Pointer to Unknown8 (uint16)",hf_browser_BrowserrServerEnumEx_unknown8); + + return offset; +} + +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; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_browser_BrowserrServerEnumEx_unknown8, false, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +/* IDL: WERROR BrowserrServerEnumEx( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown1, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown2, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown3, */ +/* IDL: [in] [out] [ref] BrowserrSrvInfo *info, */ +/* IDL: [in] int32 unknown4, */ +/* IDL: [out] [ref] int32 *unknown5, */ +/* IDL: [in] int32 unknown6, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown7, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *unknown8 */ +/* IDL: ); */ + +static int +browser_dissect_BrowserrServerEnumEx_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="BrowserrServerEnumEx"; + offset = browser_dissect_element_BrowserrServerEnumEx_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + + offset = browser_dissect_element_BrowserrServerEnumEx_unknown5(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_browser_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 +browser_dissect_BrowserrServerEnumEx_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="BrowserrServerEnumEx"; + offset = browser_dissect_element_BrowserrServerEnumEx_unknown1(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown2(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown3(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_info(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown4(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown6(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown7(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + offset = browser_dissect_element_BrowserrServerEnumEx_unknown8(tvb, offset, pinfo, tree, di, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); + return offset; +} + + +static const dcerpc_sub_dissector browser_dissectors[] = { + { 0, "BrowserrServerEnum", + browser_dissect_BrowserrServerEnum_request, browser_dissect_BrowserrServerEnum_response}, + { 1, "BrowserrDebugCall", + browser_dissect_BrowserrDebugCall_request, browser_dissect_BrowserrDebugCall_response}, + { 2, "BrowserrQueryOtherDomains", + browser_dissect_BrowserrQueryOtherDomains_request, browser_dissect_BrowserrQueryOtherDomains_response}, + { 3, "BrowserrResetNetlogonState", + browser_dissect_BrowserrResetNetlogonState_request, browser_dissect_BrowserrResetNetlogonState_response}, + { 4, "BrowserrDebugTrace", + browser_dissect_BrowserrDebugTrace_request, browser_dissect_BrowserrDebugTrace_response}, + { 5, "BrowserrQueryStatistics", + browser_dissect_BrowserrQueryStatistics_request, browser_dissect_BrowserrQueryStatistics_response}, + { 6, "BrowserrResetStatistics", + browser_dissect_BrowserrResetStatistics_request, browser_dissect_BrowserrResetStatistics_response}, + { 7, "NetrBrowserStatisticsClear", + browser_dissect_NetrBrowserStatisticsClear_request, browser_dissect_NetrBrowserStatisticsClear_response}, + { 8, "NetrBrowserStatisticsGet", + browser_dissect_NetrBrowserStatisticsGet_request, browser_dissect_NetrBrowserStatisticsGet_response}, + { 9, "BrowserrSetNetlogonState", + browser_dissect_BrowserrSetNetlogonState_request, browser_dissect_BrowserrSetNetlogonState_response}, + { 10, "BrowserrQueryEmulatedDomains", + browser_dissect_BrowserrQueryEmulatedDomains_request, browser_dissect_BrowserrQueryEmulatedDomains_response}, + { 11, "BrowserrServerEnumEx", + browser_dissect_BrowserrServerEnumEx_request, browser_dissect_BrowserrServerEnumEx_response}, + { 0, NULL, NULL, NULL } +}; + +void proto_register_dcerpc_browser(void) +{ + static hf_register_info hf[] = { + { &hf_browser_BrowserrDebugCall_unknown1, + { "Unknown1", "browser.BrowserrDebugCall.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrDebugCall_unknown2, + { "Unknown2", "browser.BrowserrDebugCall.unknown2", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrDebugCall_unknown3, + { "Unknown3", "browser.BrowserrDebugCall.unknown3", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrDebugTrace_unknown1, + { "Unknown1", "browser.BrowserrDebugTrace.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrDebugTrace_unknown2, + { "Unknown2", "browser.BrowserrDebugTrace.unknown2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryEmulatedDomains_unknown1, + { "Unknown1", "browser.BrowserrQueryEmulatedDomains.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryEmulatedDomains_unknown2, + { "Unknown2", "browser.BrowserrQueryEmulatedDomains.unknown2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryOtherDomains_info, + { "Info", "browser.BrowserrQueryOtherDomains.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryOtherDomains_server_unc, + { "Server Unc", "browser.BrowserrQueryOtherDomains.server_unc", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryOtherDomains_total_entries, + { "Total Entries", "browser.BrowserrQueryOtherDomains.total_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryStatistics_unknown1, + { "Unknown1", "browser.BrowserrQueryStatistics.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrQueryStatistics_unknown2, + { "Unknown2", "browser.BrowserrQueryStatistics.unknown2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrResetNetlogonState_unknown, + { "Unknown", "browser.BrowserrResetNetlogonState.unknown", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrResetStatistics_unknown, + { "Unknown", "browser.BrowserrResetStatistics.unknown", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_info, + { "Info", "browser.BrowserrServerEnumEx.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown1, + { "Unknown1", "browser.BrowserrServerEnumEx.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown2, + { "Unknown2", "browser.BrowserrServerEnumEx.unknown2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown3, + { "Unknown3", "browser.BrowserrServerEnumEx.unknown3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown4, + { "Unknown4", "browser.BrowserrServerEnumEx.unknown4", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown5, + { "Unknown5", "browser.BrowserrServerEnumEx.unknown5", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown6, + { "Unknown6", "browser.BrowserrServerEnumEx.unknown6", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown7, + { "Unknown7", "browser.BrowserrServerEnumEx.unknown7", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnumEx_unknown8, + { "Unknown8", "browser.BrowserrServerEnumEx.unknown8", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_info, + { "Info", "browser.BrowserrServerEnum.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown1, + { "Unknown1", "browser.BrowserrServerEnum.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown2, + { "Unknown2", "browser.BrowserrServerEnum.unknown2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown3, + { "Unknown3", "browser.BrowserrServerEnum.unknown3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown4, + { "Unknown4", "browser.BrowserrServerEnum.unknown4", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown5, + { "Unknown5", "browser.BrowserrServerEnum.unknown5", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown6, + { "Unknown6", "browser.BrowserrServerEnum.unknown6", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown7, + { "Unknown7", "browser.BrowserrServerEnum.unknown7", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrServerEnum_unknown8, + { "Unknown8", "browser.BrowserrServerEnum.unknown8", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSetNetlogonState_unknown1, + { "Unknown1", "browser.BrowserrSetNetlogonState.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSetNetlogonState_unknown2, + { "Unknown2", "browser.BrowserrSetNetlogonState.unknown2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSetNetlogonState_unknown3, + { "Unknown3", "browser.BrowserrSetNetlogonState.unknown3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSetNetlogonState_unknown4, + { "Unknown4", "browser.BrowserrSetNetlogonState.unknown4", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo100Ctr_entries, + { "Entries", "browser.BrowserrSrvInfo100Ctr.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo100Ctr_entries_read, + { "Entries Read", "browser.BrowserrSrvInfo100Ctr.entries_read", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo101Ctr_entries, + { "Entries", "browser.BrowserrSrvInfo101Ctr.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo101Ctr_entries_read, + { "Entries Read", "browser.BrowserrSrvInfo101Ctr.entries_read", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfoUnion_info100, + { "Info100", "browser.BrowserrSrvInfoUnion.info100", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfoUnion_info101, + { "Info101", "browser.BrowserrSrvInfoUnion.info101", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo_info, + { "Info", "browser.BrowserrSrvInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_BrowserrSrvInfo_level, + { "Level", "browser.BrowserrSrvInfo.level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_NetrBrowserStatisticsClear_unknown, + { "Unknown", "browser.NetrBrowserStatisticsClear.unknown", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_NetrBrowserStatisticsGet_unknown1, + { "Unknown1", "browser.NetrBrowserStatisticsGet.unknown1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_NetrBrowserStatisticsGet_unknown2, + { "Unknown2", "browser.NetrBrowserStatisticsGet.unknown2", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_NetrBrowserStatisticsGet_unknown3, + { "Unknown3", "browser.NetrBrowserStatisticsGet.unknown3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_1_unknown, + { "Unknown", "browser.TYPE_1.unknown", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown1, + { "Unknown1", "browser.TYPE_2.unknown1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown10, + { "Unknown10", "browser.TYPE_2.unknown10", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown11, + { "Unknown11", "browser.TYPE_2.unknown11", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown12, + { "Unknown12", "browser.TYPE_2.unknown12", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown13, + { "Unknown13", "browser.TYPE_2.unknown13", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown14, + { "Unknown14", "browser.TYPE_2.unknown14", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown15, + { "Unknown15", "browser.TYPE_2.unknown15", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown16, + { "Unknown16", "browser.TYPE_2.unknown16", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown17, + { "Unknown17", "browser.TYPE_2.unknown17", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown18, + { "Unknown18", "browser.TYPE_2.unknown18", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown19, + { "Unknown19", "browser.TYPE_2.unknown19", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown2, + { "Unknown2", "browser.TYPE_2.unknown2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown3, + { "Unknown3", "browser.TYPE_2.unknown3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown4, + { "Unknown4", "browser.TYPE_2.unknown4", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown5, + { "Unknown5", "browser.TYPE_2.unknown5", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown6, + { "Unknown6", "browser.TYPE_2.unknown6", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown7, + { "Unknown7", "browser.TYPE_2.unknown7", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown8, + { "Unknown8", "browser.TYPE_2.unknown8", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_2_unknown9, + { "Unknown9", "browser.TYPE_2.unknown9", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown1, + { "Unknown1", "browser.TYPE_3.unknown1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown10, + { "Unknown10", "browser.TYPE_3.unknown10", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown11, + { "Unknown11", "browser.TYPE_3.unknown11", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown12, + { "Unknown12", "browser.TYPE_3.unknown12", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown13, + { "Unknown13", "browser.TYPE_3.unknown13", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown14, + { "Unknown14", "browser.TYPE_3.unknown14", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown15, + { "Unknown15", "browser.TYPE_3.unknown15", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown16, + { "Unknown16", "browser.TYPE_3.unknown16", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown2, + { "Unknown2", "browser.TYPE_3.unknown2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown3, + { "Unknown3", "browser.TYPE_3.unknown3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown4, + { "Unknown4", "browser.TYPE_3.unknown4", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown5, + { "Unknown5", "browser.TYPE_3.unknown5", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown6, + { "Unknown6", "browser.TYPE_3.unknown6", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown7, + { "Unknown7", "browser.TYPE_3.unknown7", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown8, + { "Unknown8", "browser.TYPE_3.unknown8", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_3_unknown9, + { "Unknown9", "browser.TYPE_3.unknown9", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_4_unknown1, + { "Unknown1", "browser.TYPE_4.unknown1", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_TYPE_4_unknown2, + { "Unknown2", "browser.TYPE_4.unknown2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_opnum, + { "Operation", "browser.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_browser_werror, + { "Windows Error", "browser.werror", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, }; - static gint *ett[] = { - &ett_dcerpc_browser + + + static int *ett[] = { + &ett_dcerpc_browser, + &ett_browser_BrowserrSrvInfo100Ctr, + &ett_browser_BrowserrSrvInfo101Ctr, + &ett_browser_BrowserrSrvInfoUnion, + &ett_browser_BrowserrSrvInfo, + &ett_browser_TYPE_1, + &ett_browser_TYPE_2, + &ett_browser_TYPE_3, + &ett_browser_TYPE_4, }; proto_dcerpc_browser = proto_register_protocol("RPC Browser", "RPC_BROWSER", "rpc_browser"); - - proto_register_field_array(proto_dcerpc_browser, hf, - array_length(hf)); + proto_register_field_array(proto_dcerpc_browser, hf, array_length (hf)); proto_register_subtree_array(ett, array_length(ett)); } -void -proto_reg_handoff_dcerpc_browser(void) +void proto_reg_handoff_dcerpc_browser(void) { - /* Register protocol as dcerpc */ - dcerpc_init_uuid(proto_dcerpc_browser, ett_dcerpc_browser, - &uuid_dcerpc_browser, ver_dcerpc_browser, - dcerpc_browser_dissectors, hf_browser_opnum); -} - -/* - * Editor modelines - https://www.wireshark.org/tools/modelines.html - * - * Local variables: - * c-basic-offset: 8 - * tab-width: 8 - * indent-tabs-mode: t - * End: - * - * vi: set shiftwidth=8 tabstop=8 noexpandtab: - * :indentSize=8:tabSize=8:noTabs=false: - */ + &uuid_dcerpc_browser, ver_dcerpc_browser, + browser_dissectors, hf_browser_opnum); +} |