aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-giop.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2009-03-03 19:51:08 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2009-03-03 19:51:08 +0000
commit43b962d2cd9f4c8691585dd60bd053b944146863 (patch)
tree4af1146720004778354a19920bec473226f5d64c /epan/dissectors/packet-giop.c
parent771519aaf0f2a862c674fe4c65c2467d0ab574ae (diff)
From Alvaro Vega Garcia:
Support ZIOP and MIOP (specialized CORBA protocols). https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3238 git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@27589 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-giop.c')
-rw-r--r--epan/dissectors/packet-giop.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/epan/dissectors/packet-giop.c b/epan/dissectors/packet-giop.c
index 1ae82fa129..c2ab00653e 100644
--- a/epan/dissectors/packet-giop.c
+++ b/epan/dissectors/packet-giop.c
@@ -300,6 +300,7 @@
#include <epan/prefs.h>
#include "packet-giop.h"
+#include "packet-ziop.h"
#include "packet-tcp.h"
#include <wsutil/file_util.h>
@@ -587,8 +588,6 @@ static const value_string service_context_ids[] = {
-#define GIOP_MAGIC "GIOP"
-
/*
* TAGS for IOR Profiles
*
@@ -4053,8 +4052,26 @@ get_giop_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
return message_size + GIOP_HEADER_SIZE;
}
+static gboolean
+dissect_giop_heur (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree);
+
+
+gboolean dissect_giop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ return dissect_giop_heur(tvb, pinfo, tree);
+}
+
+
static void
dissect_giop_tcp (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) {
+
+ if ( tvb_memeql(tvb, 0, GIOP_MAGIC ,4) != 0) {
+
+ if ( tvb_memeql(tvb, 0, ZIOP_MAGIC ,4) == 0)
+ dissect_ziop_heur(tvb, pinfo, tree);
+
+ return;
+ }
+
tcp_dissect_pdus(tvb, pinfo, tree, giop_desegment, GIOP_HEADER_SIZE,
get_giop_pdu_len, dissect_giop_common);
}