diff options
author | John Thacker <johnthacker@gmail.com> | 2022-08-06 16:03:33 -0400 |
---|---|---|
committer | John Thacker <johnthacker@gmail.com> | 2022-08-06 18:51:07 -0400 |
commit | 2347345eec431041e42d8e9a54e68764fe23319d (patch) | |
tree | c4de7ba7a8973e81e7e1b0140cc87763d3098dc2 /epan/dissectors/packet-diameter.c | |
parent | f9cf0a0ae7ebd8c4dd1da15c1ca4296313242a9a (diff) |
prefs: More port prefs to auto prefs with ranges
Move the rest of the SCTP port preferences to auto prefs
with ranges. Ping #14319.
Diffstat (limited to 'epan/dissectors/packet-diameter.c')
-rw-r--r-- | epan/dissectors/packet-diameter.c | 110 |
1 files changed, 43 insertions, 67 deletions
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c index f1ba1f909a..4a184be007 100644 --- a/epan/dissectors/packet-diameter.c +++ b/epan/dissectors/packet-diameter.c @@ -314,7 +314,6 @@ static int diameter_tap = -1; static dissector_handle_t diameter_udp_handle; static dissector_handle_t diameter_tcp_handle; static dissector_handle_t diameter_sctp_handle; -static range_t *global_diameter_sctp_port_range; /* This is IANA registered for TCP and SCTP (and reserved for UDP) */ #define DEFAULT_DIAMETER_PORT_RANGE "3868" /* This is IANA registered for TLS/TCP and DTLS/SCTP (and reserved for UDP) */ @@ -2555,20 +2554,11 @@ proto_register_diameter(void) diameter_expr_result_vnd_table = register_dissector_table("diameter.vnd_exp_res", "Diameter Experimental-Result-Code", proto_diameter, FT_UINT32, BASE_DEC); - /* Set default TCP ports */ - range_convert_str(wmem_epan_scope(), &global_diameter_sctp_port_range, DEFAULT_DIAMETER_PORT_RANGE, MAX_SCTP_PORT); - - /* Register configuration options for ports */ - diameter_module = prefs_register_protocol(proto_diameter, proto_reg_handoff_diameter); + /* Register configuration options */ + diameter_module = prefs_register_protocol(proto_diameter, NULL); /* For reading older preference files with "Diameter." preferences */ prefs_register_module_alias("Diameter", diameter_module); - prefs_register_range_preference(diameter_module, "sctp.ports", - "Diameter SCTP Ports", - "SCTP ports to be decoded as Diameter (default: " - DEFAULT_DIAMETER_PORT_RANGE ")", - &global_diameter_sctp_port_range, MAX_SCTP_PORT); - /* Desegmentation */ prefs_register_bool_preference(diameter_module, "desegment", "Reassemble Diameter messages spanning multiple TCP segments", @@ -2580,7 +2570,6 @@ proto_register_diameter(void) * them as obsolete rather than just illegal. */ prefs_register_obsolete_preference(diameter_module, "version"); - prefs_register_obsolete_preference(diameter_module, "sctp.port"); prefs_register_obsolete_preference(diameter_module, "command_in_header"); prefs_register_obsolete_preference(diameter_module, "dictionary.name"); prefs_register_obsolete_preference(diameter_module, "dictionary.use"); @@ -2597,79 +2586,66 @@ proto_register_diameter(void) void proto_reg_handoff_diameter(void) { - static gboolean Initialized=FALSE; - static range_t *diameter_sctp_port_range; - - if (!Initialized) { - diameter_udp_handle = create_dissector_handle(dissect_diameter, proto_diameter); - data_handle = find_dissector("data"); - eap_handle = find_dissector_add_dependency("eap", proto_diameter); - - dissector_add_uint("sctp.ppi", DIAMETER_PROTOCOL_ID, diameter_sctp_handle); + diameter_udp_handle = create_dissector_handle(dissect_diameter, proto_diameter); + data_handle = find_dissector("data"); + eap_handle = find_dissector_add_dependency("eap", proto_diameter); - heur_dissector_add("tcp", dissect_diameter_tcp_heur, "Diameter over TCP", "diameter_tcp", proto_diameter, HEURISTIC_DISABLE); + dissector_add_uint("sctp.ppi", DIAMETER_PROTOCOL_ID, diameter_sctp_handle); - ssl_dissector_add(DEFAULT_DIAMETER_TLS_PORT, diameter_tcp_handle); - dtls_dissector_add(DEFAULT_DIAMETER_TLS_PORT, diameter_sctp_handle); + heur_dissector_add("tcp", dissect_diameter_tcp_heur, "Diameter over TCP", "diameter_tcp", proto_diameter, HEURISTIC_DISABLE); - /* Register special decoding for some AVPs */ + ssl_dissector_add(DEFAULT_DIAMETER_TLS_PORT, diameter_tcp_handle); + dtls_dissector_add(DEFAULT_DIAMETER_TLS_PORT, diameter_sctp_handle); - /* AVP Code: 1 User-Name */ - dissector_add_uint("diameter.base", 1, create_dissector_handle(dissect_diameter_user_name, proto_diameter)); + /* Register special decoding for some AVPs */ - /* AVP Code: 79 EAP-Message (defined in RFC 2869, but used for EAP-TTLS, RFC 5281) */ - dissector_add_uint("diameter.base", 79, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); + /* AVP Code: 1 User-Name */ + dissector_add_uint("diameter.base", 1, create_dissector_handle(dissect_diameter_user_name, proto_diameter)); - /* AVP Code: 97 Framed-IPv6-Address */ - dissector_add_uint("diameter.base", 97, create_dissector_handle(dissect_diameter_base_framed_ipv6_prefix, proto_diameter)); + /* AVP Code: 79 EAP-Message (defined in RFC 2869, but used for EAP-TTLS, RFC 5281) */ + dissector_add_uint("diameter.base", 79, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); - /* AVP Code: 124 MIP6-Feature-Vector */ - dissector_add_uint("diameter.base", 124, create_dissector_handle(dissect_diameter_mip6_feature_vector, proto_diameter)); + /* AVP Code: 97 Framed-IPv6-Address */ + dissector_add_uint("diameter.base", 97, create_dissector_handle(dissect_diameter_base_framed_ipv6_prefix, proto_diameter)); - /* AVP Code: 265 Supported-Vendor-Id */ - dissector_add_uint("diameter.base", 265, create_dissector_handle(dissect_diameter_vendor_id, proto_diameter)); + /* AVP Code: 124 MIP6-Feature-Vector */ + dissector_add_uint("diameter.base", 124, create_dissector_handle(dissect_diameter_mip6_feature_vector, proto_diameter)); - /* AVP Code: 266 Vendor-Id */ - dissector_add_uint("diameter.base", 266, create_dissector_handle(dissect_diameter_vendor_id, proto_diameter)); + /* AVP Code: 265 Supported-Vendor-Id */ + dissector_add_uint("diameter.base", 265, create_dissector_handle(dissect_diameter_vendor_id, proto_diameter)); - /* AVP Code: 443 Subscription-Id */ - dissector_add_uint("diameter.base", 443, create_dissector_handle(dissect_diameter_subscription_id, proto_diameter)); + /* AVP Code: 266 Vendor-Id */ + dissector_add_uint("diameter.base", 266, create_dissector_handle(dissect_diameter_vendor_id, proto_diameter)); - /* AVP Code: 450 Subscription-Id-Type */ - dissector_add_uint("diameter.base", 450, create_dissector_handle(dissect_diameter_subscription_id_type, proto_diameter)); + /* AVP Code: 443 Subscription-Id */ + dissector_add_uint("diameter.base", 443, create_dissector_handle(dissect_diameter_subscription_id, proto_diameter)); - /* AVP Code: 444 Subscription-Id-Data */ - dissector_add_uint("diameter.base", 444, create_dissector_handle(dissect_diameter_subscription_id_data, proto_diameter)); + /* AVP Code: 450 Subscription-Id-Type */ + dissector_add_uint("diameter.base", 450, create_dissector_handle(dissect_diameter_subscription_id_type, proto_diameter)); - /* AVP Code: 458 User-Equipment-Info */ - dissector_add_uint("diameter.base", 458, create_dissector_handle(dissect_diameter_user_equipment_info, proto_diameter)); + /* AVP Code: 444 Subscription-Id-Data */ + dissector_add_uint("diameter.base", 444, create_dissector_handle(dissect_diameter_subscription_id_data, proto_diameter)); - /* AVP Code: 459 User-Equipment-Info-Type */ - dissector_add_uint("diameter.base", 459, create_dissector_handle(dissect_diameter_user_equipment_info_type, proto_diameter)); + /* AVP Code: 458 User-Equipment-Info */ + dissector_add_uint("diameter.base", 458, create_dissector_handle(dissect_diameter_user_equipment_info, proto_diameter)); - /* AVP Code: 460 User-Equipment-Info-Value */ - dissector_add_uint("diameter.base", 460, create_dissector_handle(dissect_diameter_user_equipment_info_value, proto_diameter)); + /* AVP Code: 459 User-Equipment-Info-Type */ + dissector_add_uint("diameter.base", 459, create_dissector_handle(dissect_diameter_user_equipment_info_type, proto_diameter)); - /* AVP Code: 462 EAP-Payload */ - dissector_add_uint("diameter.base", 462, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); - /* AVP Code: 463 EAP-Reissued-Payload */ - dissector_add_uint("diameter.base", 463, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); + /* AVP Code: 460 User-Equipment-Info-Value */ + dissector_add_uint("diameter.base", 460, create_dissector_handle(dissect_diameter_user_equipment_info_value, proto_diameter)); - /* Register dissector for Experimental result code, with 3GPP2's vendor Id */ - dissector_add_uint("diameter.vnd_exp_res", VENDOR_THE3GPP2, create_dissector_handle(dissect_diameter_3gpp2_exp_res, proto_diameter)); + /* AVP Code: 462 EAP-Payload */ + dissector_add_uint("diameter.base", 462, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); + /* AVP Code: 463 EAP-Reissued-Payload */ + dissector_add_uint("diameter.base", 463, create_dissector_handle(dissect_diameter_eap_payload, proto_diameter)); - dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DIAMETER_PORT_RANGE, diameter_tcp_handle); - dissector_add_uint_range_with_preference("udp.port", "", diameter_udp_handle); - - Initialized=TRUE; - } else { - dissector_delete_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); - wmem_free(wmem_epan_scope(), diameter_sctp_port_range); - } + /* Register dissector for Experimental result code, with 3GPP2's vendor Id */ + dissector_add_uint("diameter.vnd_exp_res", VENDOR_THE3GPP2, create_dissector_handle(dissect_diameter_3gpp2_exp_res, proto_diameter)); - /* set port for future deletes */ - diameter_sctp_port_range = range_copy(wmem_epan_scope(), global_diameter_sctp_port_range); - dissector_add_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); + dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DIAMETER_PORT_RANGE, diameter_tcp_handle); + dissector_add_uint_range_with_preference("udp.port", "", diameter_udp_handle); + dissector_add_uint_range_with_preference("sctp.port", DEFAULT_DIAMETER_PORT_RANGE, diameter_sctp_handle); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); |