diff options
author | Anders Broman <anders.broman@ericsson.com> | 2019-03-08 13:59:40 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-03-08 13:50:13 +0000 |
commit | 7208e602747a755fffb186230156901cc6d98a69 (patch) | |
tree | 58bdc826493045f9e4cf8f0e40b5137ae0415a07 /epan/dissectors/packet-bssap.c | |
parent | ae367d9b9b34588c43621e04cf48da54aed3b96d (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/dissectors/packet-bssap.c')
-rw-r--r-- | epan/dissectors/packet-bssap.c | 17 |
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; } |