11#ifndef __PACKET_DCOM_H
12#define __PACKET_DCOM_H
14#include <epan/dissectors/packet-dcerpc.h>
15#include "ws_symbol_export.h"
18WS_DLL_PUBLIC
const value_string dcom_variant_type_vals[];
21extern int hf_dcom_iid;
22extern int hf_dcom_clsid;
23extern int hf_dcom_oxid;
24extern int hf_dcom_oid;
25extern int hf_dcom_ipid;
27extern GHashTable *dcom_uuids;
30WS_DLL_PUBLIC
bool dcom_prefs_display_unmarshalling_details;
41 dcom_machine_t *parent;
51 dcom_object_t *parent;
59typedef unsigned (*dcom_dissect_fn_t) (tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
60 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int size);
63 dcom_object_t *parent;
67 dcom_dissect_fn_t routine;
73extern void dcom_interface_dump(
void);
75extern unsigned dcom_register_routine(dcom_dissect_fn_t routine,
e_guid_t* uuid);
76extern void dcom_register_common_routines_(
void);
78extern dcom_dissect_fn_t dcom_get_routine_by_uuid(
const e_guid_t* uuid);
82dissect_dcom_this(tvbuff_t *tvb,
unsigned offset,
83 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep);
85dissect_dcom_that(tvbuff_t *tvb,
unsigned offset,
86 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep);
90#define dissect_dcom_BOOLEAN dissect_ndr_uint8
91#define dissect_dcom_BYTE dissect_ndr_uint8
92#define dissect_dcom_WORD dissect_ndr_uint16
93#define dissect_dcom_DWORD dissect_ndr_uint32
94#define dissect_dcom_I8 dissect_ndr_uint64
95#define dissect_dcom_ID dissect_ndr_duint32
96#define dissect_dcom_FILETIME dissect_ndr_duint32
97#define dissect_dcom_VARIANT_BOOL dissect_ndr_uint16
98#define dissect_dcom_FLOAT dissect_ndr_float
99#define dissect_dcom_DOUBLE dissect_ndr_double
100#define dissect_dcom_DATE dissect_ndr_double
102WS_DLL_PUBLIC
unsigned
103dissect_dcom_UUID(tvbuff_t *tvb,
unsigned offset,
104 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep,
107WS_DLL_PUBLIC
unsigned
108dissect_dcom_append_UUID(tvbuff_t *tvb,
unsigned offset,
109 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep,
110 int hfindex,
int field_index,
e_guid_t *uuid);
113dissect_dcom_indexed_WORD(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
114 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
115 int hfindex, uint16_t * pu16WORD,
int field_index);
117WS_DLL_PUBLIC
unsigned
118dissect_dcom_indexed_DWORD(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
119 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
120 int hfindex, uint32_t * pu32DWORD,
int field_index);
122WS_DLL_PUBLIC
unsigned
123dissect_dcom_HRESULT(tvbuff_t *tvb,
unsigned offset,
124 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep, uint32_t * pu32hresult);
126WS_DLL_PUBLIC
unsigned
127dissect_dcom_HRESULT_item(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
128 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
129 uint32_t * pu32HResult,
int field_index,
proto_item **item);
131WS_DLL_PUBLIC
unsigned
132dissect_dcom_indexed_HRESULT(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
133 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
134 uint32_t * pu32hresult,
int field_index);
137dissect_dcom_COMVERSION(tvbuff_t *tvb,
unsigned offset,
138 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep,
139 uint16_t * pu16version_major, uint16_t * pu16version_minor);
141typedef void (*sa_callback_t) (tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
142 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
143 uint32_t u32VarType, uint32_t u32ArraySize);
145WS_DLL_PUBLIC
unsigned
146dissect_dcom_SAFEARRAY(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
147 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex _U_, sa_callback_t sacb);
149WS_DLL_PUBLIC
unsigned
150dissect_dcom_LPWSTR(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
151 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex,
152 char *psz_buffer, uint32_t u32max_buffer);
154WS_DLL_PUBLIC
unsigned
155dissect_dcom_indexed_LPWSTR(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
156 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex,
157 char *pszStr, uint32_t u32MaxStr,
int field_index);
159WS_DLL_PUBLIC
unsigned
160dissect_dcom_BSTR(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
161 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex,
162 char *psz_buffer, uint32_t u32max_buffer);
165dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
166 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex,
char *ip);
169dissect_dcom_STDOBJREF(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
170 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex,
171 uint64_t *oxid, uint64_t *oid,
e_guid_t *ipid);
173dissect_dcom_OBJREF(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
174 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex, dcom_interface_t **interf);
176WS_DLL_PUBLIC
unsigned
177dissect_dcom_MInterfacePointer(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
178 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex, dcom_interface_t **interf);
179WS_DLL_PUBLIC
unsigned
180dissect_dcom_PMInterfacePointer(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
181 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex, dcom_interface_t **interf);
183WS_DLL_PUBLIC
unsigned
184dissect_dcom_VARTYPE(tvbuff_t *tvb,
unsigned offset,
185 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep,
186 uint16_t *pu16Vartype);
188WS_DLL_PUBLIC
unsigned
189dissect_dcom_VARIANT(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
190 proto_tree *tree, dcerpc_info *di, uint8_t *drep,
int hfindex);
193WS_DLL_PUBLIC
unsigned
194dissect_dcom_dcerpc_array_size(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
195 proto_tree *tree, dcerpc_info *di, uint8_t *drep, uint32_t *pu32array_size);
197WS_DLL_PUBLIC
unsigned
198dissect_dcom_dcerpc_pointer(tvbuff_t *tvb,
unsigned offset,
packet_info *pinfo,
199 proto_tree *tree, dcerpc_info *di, uint8_t *drep, uint32_t *pu32pointer);
203dissect_dcom_tobedone_data(tvbuff_t *tvb,
unsigned offset,
204 packet_info *pinfo, proto_tree *tree, uint8_t *drep,
int length);
208dissect_dcom_nospec_data(tvbuff_t *tvb,
unsigned offset,
209 packet_info *pinfo, proto_tree *tree, uint8_t *drep,
int length);
213WS_DLL_PUBLIC
unsigned
214dissect_dcom_simple_rqst(tvbuff_t *tvb,
unsigned offset,
215 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep);
217WS_DLL_PUBLIC
unsigned
218dissect_dcom_simple_resp(tvbuff_t *tvb,
unsigned offset,
219 packet_info *pinfo, proto_tree *tree, dcerpc_info *di, uint8_t *drep);
struct _address address
Holds a network or link-layer address of any supported type.
struct _packet_info packet_info
Represents the metadata and indexing information for a single captured frame.
proto_node proto_item
Definition proto.h:927
struct _e_guid_t e_guid_t
Represents a GUID/UUID value; may be larger than GUID_LEN so must not be used to directly overlay pac...
Definition packet-dcom.h:50
Definition packet-dcom.h:33
Definition packet-dcom.h:62
Definition packet-dcom.h:40
struct _value_string value_string
Mapping between a 32-bit integer value and its string representation.