aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcom.h
diff options
context:
space:
mode:
authorulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2006-08-11 19:15:12 +0000
committerulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2006-08-11 19:15:12 +0000
commita5ff7961c30f0ff0fd480b6f82426c2e380ba2bb (patch)
tree74f0bfcbe9f7f0b8c52cb3c6b22a0726a0bcc4a7 /epan/dissectors/packet-dcom.h
parent17d776e90c75c2ece7a681dd0e39b227f606c4ea (diff)
add an experimental DCOM object "database" based on the exchanged interface pointers
add a lot more PROFINET CBA dissection output based on these DCOM context information still need some improvements, e.g. dissection uses a simple (slow) linear list search changes are fuzz-tested git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@18882 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-dcom.h')
-rw-r--r--epan/dissectors/packet-dcom.h52
1 files changed, 45 insertions, 7 deletions
diff --git a/epan/dissectors/packet-dcom.h b/epan/dissectors/packet-dcom.h
index c95d0228c2..4d9cabcf89 100644
--- a/epan/dissectors/packet-dcom.h
+++ b/epan/dissectors/packet-dcom.h
@@ -29,10 +29,48 @@
extern const value_string dcom_hresult_vals[];
extern const value_string dcom_variant_type_vals[];
+extern int hf_dcom_iid;
+extern int hf_dcom_clsid;
+extern int hf_dcom_oxid;
+extern int hf_dcom_oid;
+extern int hf_dcom_ipid;
+
/* preferences */
extern int dcom_prefs_display_unmarshalling_details;
+typedef struct dcom_machine_s {
+ GList *objects;
+ gint first_packet;
+
+ const guint8 ip[4];
+} dcom_machine_t;
+
+typedef struct dcom_object_s {
+ dcom_machine_t *parent;
+ GList *interfaces;
+ void *private_data;
+ gint first_packet;
+
+ guint64 oid;
+ guint64 oxid;
+} dcom_object_t;
+
+typedef struct dcom_interface_s {
+ dcom_object_t *parent;
+ void *private_data;
+ gint first_packet;
+
+ e_uuid_t iid;
+ e_uuid_t ipid; /* the DCE/RPC Object UUID */
+} dcom_interface_t;
+
+
+extern dcom_interface_t *dcom_interface_new(packet_info *pinfo, const guint8 *ip, e_uuid_t *iid, guint64 oxid, guint64 oid, e_uuid_t *ipid);
+extern dcom_interface_t *dcom_interface_find(packet_info *pinfo, const guint8 *ip, e_uuid_t *ipid);
+extern void dcom_interface_dump(void);
+
+
/* the essential DCOM this and that, starting every call */
extern int
dissect_dcom_this(tvbuff_t *tvb, int offset,
@@ -59,7 +97,7 @@ dissect_dcom_that(tvbuff_t *tvb, int offset,
extern int
dissect_dcom_append_UUID(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree, guint8 *drep,
- int hfindex, const gchar *field_name, int field_index);
+ int hfindex, const gchar *field_name, int field_index, e_uuid_t *uuid);
extern const gchar* dcom_uuid_to_str(e_uuid_t *uuid);
extern int
@@ -103,22 +141,22 @@ dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
extern int
dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex);
+ proto_tree *tree, guint8 *drep, int hfindex, gchar *ip);
extern int
dissect_dcom_STDOBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex);
-
+ proto_tree *tree, guint8 *drep, int hfindex,
+ guint64 *oxid, guint64 *oid, e_uuid_t *ipid);
extern int
dissect_dcom_OBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex);
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf);
extern int
dissect_dcom_MInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex);
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf);
extern int
dissect_dcom_PMInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex);
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf);
extern int
dissect_dcom_VARTYPE(tvbuff_t *tvb, int offset,