aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--asn1/ranap/packet-ranap-template.c1
-rw-r--r--epan/dissectors/packet-ranap.c5
-rw-r--r--epan/dissectors/packet-sua.c7
3 files changed, 11 insertions, 2 deletions
diff --git a/asn1/ranap/packet-ranap-template.c b/asn1/ranap/packet-ranap-template.c
index f8eb34ad15..6cef14974a 100644
--- a/asn1/ranap/packet-ranap-template.c
+++ b/asn1/ranap/packet-ranap-template.c
@@ -1129,6 +1129,7 @@ void proto_reg_handoff_ranap(void) {
* is or isn't enabled
*/
heur_dissector_add("sccp", dissect_sccp_ranap_heur, proto_ranap);
+ heur_dissector_add("sua", dissect_sccp_ranap_heur, proto_ranap);
}
diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c
index b00ad0b681..b983f7dd51 100644
--- a/epan/dissectors/packet-ranap.c
+++ b/epan/dissectors/packet-ranap.c
@@ -10803,6 +10803,7 @@ void proto_reg_handoff_ranap(void) {
* is or isn't enabled
*/
heur_dissector_add("sccp", dissect_sccp_ranap_heur, proto_ranap);
+ heur_dissector_add("sua", dissect_sccp_ranap_heur, proto_ranap);
}
@@ -12888,7 +12889,7 @@ void proto_register_ranap(void) {
"PrivateIE-Field/value", HFILL }},
/*--- End of included file: packet-ranap-hfarr.c ---*/
-#line 1149 "packet-ranap-template.c"
+#line 1150 "packet-ranap-template.c"
};
/* List of subtrees */
@@ -13157,7 +13158,7 @@ void proto_register_ranap(void) {
&ett_ranap_PrivateIE_Field,
/*--- End of included file: packet-ranap-ettarr.c ---*/
-#line 1156 "packet-ranap-template.c"
+#line 1157 "packet-ranap-template.c"
};
/* Register protocol */
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