aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sua.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-06-29 20:39:53 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-06-29 20:39:53 +0000
commit18c69d17b0d304b72dcafa37b0ea7d3a4551a85e (patch)
tree049c764a8314e802a6f1178aec139c9285de4243 /epan/dissectors/packet-sua.c
parentf4c7cae6b0a690af74560e2e67b6fe60fec1d69f (diff)
Add a heuristic table to SUA (SUA and SCCP should share the same table) to heuristically
dissect RANAP ower SUA. svn path=/trunk/; revision=18616
Diffstat (limited to 'epan/dissectors/packet-sua.c')
-rw-r--r--epan/dissectors/packet-sua.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sua.c b/epan/dissectors/packet-sua.c
index 8341631372..3ab61d851e 100644
--- a/epan/dissectors/packet-sua.c
+++ b/epan/dissectors/packet-sua.c
@@ -329,6 +329,7 @@ static gint ett_sua_protcol_classes = -1;
static dissector_handle_t data_handle;
static dissector_table_t sccp_ssn_dissector_table;
+static heur_dissector_list_t heur_subdissector_list;
/* stuff for supporting multiple versions */
typedef enum {
@@ -1829,6 +1830,10 @@ dissect_sua_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *sua_t
&& (source_ssn == INVALID_SSN ||
!dissector_try_port(sccp_ssn_dissector_table, source_ssn, data_tvb, pinfo, tree)))
{
+ /* try heuristic subdissector list to see if there are any takers */
+ if (dissector_try_heuristic(heur_subdissector_list, data_tvb, pinfo, tree)) {
+ return;
+ }
/* No sub-dissection occured, treat it as raw data */
call_dissector(data_handle, data_tvb, pinfo, sua_tree);
}
@@ -2010,6 +2015,8 @@ proto_register_sua(void)
prefs_register_obsolete_preference(sua_module, "sua_version");
prefs_register_enum_preference(sua_module, "version", "SUA Version", "Version used by Wireshark", &version, options, FALSE);
+ register_heur_dissector_list("sua", &heur_subdissector_list);
+
}
void