aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-09-19 08:06:25 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-09-19 08:06:25 +0000
commiteba5b5b225c0c307bb20285b2bcd5a7fda64650f (patch)
treec5b7e28079e4bbe3240542d7a86977e4758b9231
parentee8d53adf5c00841618722e01480bde653454bfc (diff)
sometimes it seems that we have the text based h248/megaco running ontop of
m3ua and not the binary one. make the binary dissector check if it is really the text based one to be used and if so call that dissector instead. svn path=/trunk/; revision=15862
-rw-r--r--asn1/h248/packet-h248-template.c16
-rw-r--r--epan/dissectors/packet-h248.c16
2 files changed, 32 insertions, 0 deletions
diff --git a/asn1/h248/packet-h248-template.c b/asn1/h248/packet-h248-template.c
index cfec0b3d0d..59a319ab35 100644
--- a/asn1/h248/packet-h248-template.c
+++ b/asn1/h248/packet-h248-template.c
@@ -713,6 +713,22 @@ dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *h248_item;
proto_tree *h248_tree = NULL;
+ /* Check if it is actually a text based h248 encoding, which we call
+ megaco in ehtereal.
+ */
+ if(tvb_length(tvb)>=6){
+ if(!tvb_strneql(tvb, 0, "MEGACO", 6)){
+ static dissector_handle_t megaco_handle=NULL;
+ if(!megaco_handle){
+ megaco_handle = find_dissector("megaco");
+ }
+ if(megaco_handle){
+ call_dissector(megaco_handle, tvb, pinfo, tree);
+ return;
+ }
+ }
+ }
+
/* Make entry in the Protocol column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");
diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c
index 87710b71c9..6c81df8aaf 100644
--- a/epan/dissectors/packet-h248.c
+++ b/epan/dissectors/packet-h248.c
@@ -4621,6 +4621,22 @@ dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *h248_item;
proto_tree *h248_tree = NULL;
+ /* Check if it is actually a text based h248 encoding, which we call
+ megaco in ehtereal.
+ */
+ if(tvb_length(tvb)>=6){
+ if(!tvb_strneql(tvb, 0, "MEGACO", 6)){
+ static dissector_handle_t megaco_handle=NULL;
+ if(!megaco_handle){
+ megaco_handle = find_dissector("megaco");
+ }
+ if(megaco_handle){
+ call_dissector(megaco_handle, tvb, pinfo, tree);
+ return;
+ }
+ }
+ }
+
/* Make entry in the Protocol column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.248");