aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2019-03-08 13:59:40 +0100
committerAnders Broman <a.broman58@gmail.com>2019-03-08 13:50:13 +0000
commit7208e602747a755fffb186230156901cc6d98a69 (patch)
tree58bdc826493045f9e4cf8f0e40b5137ae0415a07 /epan
parentae367d9b9b34588c43621e04cf48da54aed3b96d (diff)
BSSAP/BSSAP+ have different "decode as" for BSSAP and BSSAP+
Bug: 15578 Change-Id: I2e60363a9b3ce2b0347854b7969929567af20502 Reviewed-on: https://code.wireshark.org/review/32356 Petri-Dish: Anders Broman <a.broman58@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-bssap.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/epan/dissectors/packet-bssap.c b/epan/dissectors/packet-bssap.c
index 89a913bcc0..ca7b587d27 100644
--- a/epan/dissectors/packet-bssap.c
+++ b/epan/dissectors/packet-bssap.c
@@ -30,6 +30,8 @@
void proto_register_bssap(void);
void proto_reg_handoff_bssap(void);
+static dissector_handle_t bssap_handle;
+
#define BSSAP 0
#define BSAP 1
@@ -2107,6 +2109,7 @@ void
proto_register_bssap(void)
{
module_t *bssap_module;
+ module_t *bssap_plus_module;
expert_module_t* expert_bssap;
/* Setup list of header fields */
@@ -2509,7 +2512,7 @@ proto_register_bssap(void)
proto_bssap = proto_register_protocol("BSSAP/BSAP", "BSSAP", "bssap");
proto_bssap_plus = proto_register_protocol("BSSAP2", "BSSAP2", "bssap_plus");
- register_dissector("bssap", dissect_bssap, proto_bssap);
+ bssap_handle = register_dissector("bssap", dissect_bssap, proto_bssap);
register_dissector("bssap.imei", dissect_bssap_imei_dissector, proto_bssap);
register_dissector("bssap_plus", dissect_bssap_plus, proto_bssap_plus);
@@ -2539,10 +2542,12 @@ proto_register_bssap(void)
gsm_or_lb_interface_options,
FALSE);
- prefs_register_uint_preference(bssap_module, "ssn",
- "Subsystem number used for BSSAP",
- "Set Subsystem number used for BSSAP/BSSAP+",
+ bssap_plus_module = prefs_register_protocol(proto_bssap_plus, proto_reg_handoff_bssap);
+ prefs_register_uint_preference(bssap_plus_module, "ssn",
+ "Subsystem number used for BSSAP+",
+ "Set Subsystem number used for BSSAP+",
10, &global_bssap_ssn);
+
bssap_dissector_table = register_dissector_table("bssap.pdu_type", "BSSAP Message Type", proto_bssap, FT_UINT8, BASE_DEC);
bsap_dissector_table = register_dissector_table("bsap.pdu_type", "BSAP Message Type", proto_bssap, FT_UINT8, BASE_DEC);
}
@@ -2558,7 +2563,7 @@ proto_reg_handoff_bssap(void)
heur_dissector_add("sccp", dissect_bssap_heur, "BSSAP over SCCP", "bssap_sccp", proto_bssap, HEURISTIC_ENABLE);
heur_dissector_add("sua", dissect_bssap_heur, "BSSAP over SUA", "bssap_sua", proto_bssap, HEURISTIC_ENABLE);
/* BSSAP+ */
- bssap_plus_handle = create_dissector_handle(dissect_bssap_plus, proto_bssap);
+ bssap_plus_handle = create_dissector_handle(dissect_bssap_plus, proto_bssap_plus);
rrlp_handle = find_dissector_add_dependency("rrlp", proto_bssap_plus);
gsm_bssmap_le_dissector_handle = find_dissector_add_dependency("gsm_bssmap_le", proto_bssap);
@@ -2569,6 +2574,8 @@ proto_reg_handoff_bssap(void)
dissector_delete_uint("sccp.ssn", old_bssap_ssn, bssap_plus_handle);
}
+ dissector_add_for_decode_as("sccp.ssn", bssap_handle);
+
dissector_add_uint("sccp.ssn", global_bssap_ssn, bssap_plus_handle);
old_bssap_ssn = global_bssap_ssn;
}