Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-dcom-provideclassinfo.c
blob1ec0b78cd417f7fa4add9c6c932f0dac21afd266
1 /* packet-dcom-provideclassinfo.c
2 * Routines for DCOM IProvideClassInfo
4 * Copyright 2019, Alex Sirr <alexsirruw@gmail.com>
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
13 /* see packet-dcom.c for details about DCOM */
15 #include "config.h"
17 #include <epan/packet.h>
18 #include "packet-dcerpc.h"
19 #include "packet-dcom.h"
21 void proto_register_dcom_provideclassinfo(void);
22 void proto_reg_handoff_dcom_provideclassinfo(void);
24 static int hf_provideclassinfo_opnum;
25 static int hf_typeinfo;
27 static e_guid_t uuid_provideclassinfo = { 0xb196b283, 0xbab4, 0x101a, { 0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07} };
28 static uint16_t ver_provideclassinfo;
29 static int ett_provideclassinfo;
30 static int proto_provideclassinfo;
32 static int dissect_IProvideClassInfo_GetClassInfo_rqst(tvbuff_t *tvb, int offset,
33 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep)
35 offset = dissect_dcom_this(tvb, offset, pinfo, tree, di, drep);
37 return offset;
40 static int dissect_IProvideClassInfo_GetClassInfo_resp(tvbuff_t *tvb, int offset,
41 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep)
43 uint32_t u32HResult;
45 offset = dissect_dcom_that(tvb, offset, pinfo, tree, di, drep);
47 offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, di, drep,
48 hf_typeinfo, NULL);
50 offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, di, drep,
51 &u32HResult);
53 return offset;
56 /* sub dissector table of IProvideClassInfo interface */
57 static const dcerpc_sub_dissector provideclassinfo_dissectors[] = {
58 {3, "GetClassInfo", dissect_IProvideClassInfo_GetClassInfo_rqst, dissect_IProvideClassInfo_GetClassInfo_resp},
59 {0, NULL, NULL, NULL},
62 void proto_register_dcom_provideclassinfo(void)
64 static hf_register_info hf_provideclassinfo_array[] = {
65 {&hf_provideclassinfo_opnum,
66 {"Operation", "provideclassinfo.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
67 { &hf_typeinfo,
68 { "ITypeInfo", "provideclassinfo.itypeinfo", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }}
71 static int *ett[] = {
72 &ett_provideclassinfo,
75 proto_provideclassinfo = proto_register_protocol("DCOM IProvideClassInfo", "IProvideClassInfo", "provideclassinfo");
76 proto_register_field_array(proto_provideclassinfo, hf_provideclassinfo_array, array_length(hf_provideclassinfo_array));
77 proto_register_subtree_array(ett, array_length(ett));
80 void proto_reg_handoff_dcom_provideclassinfo(void)
82 dcerpc_init_uuid(proto_provideclassinfo, ett_provideclassinfo,
83 &uuid_provideclassinfo, ver_provideclassinfo,
84 provideclassinfo_dissectors, hf_provideclassinfo_opnum);
88 * Editor modelines - https://www.wireshark.org/tools/modelines.html
90 * Local variables:
91 * c-basic-offset: 4
92 * tab-width: 8
93 * indent-tabs-mode: nil
94 * End:
96 * vi: set shiftwidth=4 tabstop=8 expandtab:
97 * :indentSize=4:tabSize=8:noTabs=true: