--- Begin Message ---
Package: ethereal-common
Version: 0.10.10-2sarge2
Severity: wishlist
Tags: patch, upstream
See patch.
diff -ur ethereal-0.10.11/epan/dissectors/packet-giop.c
ethereal-0.10.11.is_a/epan/dissectors/packet-giop.c
--- ethereal-0.10.11/epan/dissectors/packet-giop.c 2005-06-18
18:44:59.000000000 +0000
+++ ethereal-0.10.11.is_a/epan/dissectors/packet-giop.c 2005-06-19
01:01:06.257886264 +0000
@@ -720,6 +720,7 @@
static const char giop_op_resolve[] = "resolve";
static const char giop_op_bind_new_context[] = "bind_new_context";
static const char giop_op_bind[] = "bind";
+static const char giop_op_is_a[] = "_is_a";
/*
* Enums for interesting local operations, that we may need to monitor
@@ -2951,12 +2952,16 @@
exres = try_explicit_giop_dissector(tvb,pinfo,clnp_tree, &offset,
header, entry->operation, entry->repoid );
}
- /* Only call heuristic if no explicit dixxector was found */
+ /* Only call heuristic if no explicit dissector was found */
if(! exres) {
-
try_heuristic_giop_dissector(tvb,pinfo,clnp_tree,&offset,header,entry->operation);
+ exres =
try_heuristic_giop_dissector(tvb,pinfo,clnp_tree,&offset,header,entry->operation);
}
+ if (!exres && !strcmp(giop_op_is_a, entry->operation) && tree) {
+ proto_tree_add_text(tree, tvb, offset - 1, 1, "Type Id%smatched",
+ get_CDR_boolean(tvb, &offset) ? " " : " not ");
+ }
break;
@@ -3409,9 +3414,17 @@
/* Only call heuristic if no explicit dissector was found */
if (! exres) {
- try_heuristic_giop_dissector(tvb,pinfo,tree,&offset,header,operation);
+ exres =
try_heuristic_giop_dissector(tvb,pinfo,tree,&offset,header,operation);
}
+ if (!exres && !strcmp(giop_op_is_a, operation) && request_tree) {
+ gchar *type_id;
+ len = get_CDR_string(tvb, &type_id, &offset, stream_is_big_endian, 0);
+ proto_tree_add_text(request_tree, tvb, offset - len - 4, 4,
+ "Type Id length: %d", len);
+ proto_tree_add_text(request_tree, tvb, offset - len, len,
+ "Type Id: %s", type_id);
+ }
/*
* We're done with operation, so we can call the cleanup handler to free
@@ -3561,9 +3574,17 @@
/* Only call heuristic if no explicit dissector was found */
if (! exres) {
- try_heuristic_giop_dissector(tvb,pinfo,tree,&offset,header,operation);
+ exres =
try_heuristic_giop_dissector(tvb,pinfo,tree,&offset,header,operation);
}
+ if (!exres && !strcmp(giop_op_is_a, operation) && request_tree) {
+ gchar *type_id;
+ len = get_CDR_string(tvb, &type_id, &offset, stream_is_big_endian, 0);
+ proto_tree_add_text(request_tree, tvb, offset - len - 4, 4,
+ "Type Id length: %d", len);
+ proto_tree_add_text(request_tree, tvb, offset - len, len,
+ "Type Id: %s", type_id);
+ }
/*
* We're done with operation, so we can call the cleanup handler to free
--- End Message ---