diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-09-19 08:06:25 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-09-19 08:06:25 +0000 |
commit | eba5b5b225c0c307bb20285b2bcd5a7fda64650f (patch) | |
tree | c5b7e28079e4bbe3240542d7a86977e4758b9231 | |
parent | ee8d53adf5c00841618722e01480bde653454bfc (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.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-h248.c | 16 |
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"); |