diff options
-rw-r--r-- | epan/dissectors/packet-amr.c | 77 | ||||
-rw-r--r-- | epan/dissectors/packet-dvb-s2-bb.c | 46 | ||||
-rw-r--r-- | epan/dissectors/packet-evs.c | 29 | ||||
-rw-r--r-- | epan/dissectors/packet-h263p.c | 31 | ||||
-rw-r--r-- | epan/dissectors/packet-h264.c | 50 | ||||
-rw-r--r-- | epan/dissectors/packet-h265.c | 31 | ||||
-rw-r--r-- | epan/dissectors/packet-ismacryp.c | 46 | ||||
-rw-r--r-- | epan/dissectors/packet-iuup.c | 26 | ||||
-rw-r--r-- | epan/dissectors/packet-lapd.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-mp4ves.c | 42 | ||||
-rw-r--r-- | epan/dissectors/packet-mtp2.c | 29 | ||||
-rw-r--r-- | epan/dissectors/packet-opus.c | 26 | ||||
-rw-r--r-- | epan/dissectors/packet-rtp-events.c | 58 | ||||
-rw-r--r-- | epan/dissectors/packet-rtp-midi.c | 28 | ||||
-rw-r--r-- | epan/dissectors/packet-rtp.c | 74 | ||||
-rw-r--r-- | epan/dissectors/packet-vp8.c | 25 | ||||
-rw-r--r-- | epan/prefs.c | 23 |
17 files changed, 171 insertions, 486 deletions
diff --git a/epan/dissectors/packet-amr.c b/epan/dissectors/packet-amr.c index da3827b440..1e5802d722 100644 --- a/epan/dissectors/packet-amr.c +++ b/epan/dissectors/packet-amr.c @@ -78,9 +78,6 @@ static expert_field ei_amr_padding_bits_not0 = EI_INIT; static expert_field ei_amr_padding_bits_correct = EI_INIT; static expert_field ei_amr_reserved = EI_INIT; -/* The dynamic payload types which will be dissected as AMR */ -static range_t *global_amr_dynamic_payload_types; -static range_t *global_amr_wb_dynamic_payload_types; static gint amr_encoding_type = 0; static gint pref_amr_mode = AMR_NB; @@ -785,19 +782,10 @@ proto_register_amr(void) expert_register_field_array(expert_amr, ei, array_length(ei)); /* Register a configuration option for port */ - amr_module = prefs_register_protocol(proto_amr, proto_reg_handoff_amr); + amr_module = prefs_register_protocol(proto_amr, NULL); - prefs_register_range_preference(amr_module, "dynamic.payload.type", - "AMR dynamic payload types", - "Dynamic payload types which will be interpreted as AMR" - "; values must be in the range 1 - 127", - &global_amr_dynamic_payload_types, 127); - - prefs_register_range_preference(amr_module, "wb.dynamic.payload.type", - "AMR-WB dynamic payload types", - "Dynamic payload types which will be interpreted as AMR-WB" - "; values must be in the range 1-127", - &global_amr_wb_dynamic_payload_types, 127); + prefs_register_obsolete_preference(amr_module, "dynamic.payload.type"); + prefs_register_obsolete_preference(amr_module, "wb.dynamic.payload.type"); prefs_register_enum_preference(amr_module, "encoding.version", "Type of AMR encoding of the payload", @@ -823,46 +811,29 @@ proto_register_amr(void) void proto_reg_handoff_amr(void) { - static range_t *amr_dynamic_payload_types; - static range_t *amr_wb_dynamic_payload_types; - static gboolean amr_prefs_initialized = FALSE; - - if (!amr_prefs_initialized) { - dissector_handle_t amr_name_handle; - amr_capability_t *ftr; - - dissector_add_string("rtp_dyn_payload_type","AMR", amr_handle); - dissector_add_string("rtp_dyn_payload_type","AMR-WB", amr_wb_handle); - - /* - * Register H.245 Generic parameter name(s) - */ - amr_name_handle = create_dissector_handle(dissect_amr_name, proto_amr); - for (ftr=amr_capability_tab; ftr->id; ftr++) { - if (ftr->name) - dissector_add_string("h245.gef.name", ftr->id, amr_name_handle); - if (ftr->content_pdu) - dissector_add_string("h245.gef.content", ftr->id, - create_dissector_handle(ftr->content_pdu, proto_amr)); - } - /* Activate the next line for testing with the randpkt tool - dissector_add_uint_with_preference("udp.port", 55555, amr_handle); - */ - amr_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", amr_dynamic_payload_types, amr_handle); - dissector_delete_uint_range("rtp.pt", amr_wb_dynamic_payload_types, amr_wb_handle); - wmem_free(wmem_epan_scope(), amr_dynamic_payload_types); - wmem_free(wmem_epan_scope(), amr_wb_dynamic_payload_types); - } + dissector_handle_t amr_name_handle; + amr_capability_t *ftr; + + dissector_add_string("rtp_dyn_payload_type","AMR", amr_handle); + dissector_add_string("rtp_dyn_payload_type","AMR-WB", amr_wb_handle); - amr_dynamic_payload_types = range_copy(wmem_epan_scope(), global_amr_dynamic_payload_types); - amr_wb_dynamic_payload_types = range_copy(wmem_epan_scope(), global_amr_wb_dynamic_payload_types); + dissector_add_uint_range_with_preference("rtp.pt", "", amr_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", amr_wb_handle); - range_remove_value(wmem_epan_scope(), &amr_dynamic_payload_types, 0); - dissector_add_uint_range("rtp.pt", amr_dynamic_payload_types, amr_handle); - range_remove_value(wmem_epan_scope(), &amr_wb_dynamic_payload_types, 0); - dissector_add_uint_range("rtp.pt", amr_wb_dynamic_payload_types, amr_wb_handle); + /* + * Register H.245 Generic parameter name(s) + */ + amr_name_handle = create_dissector_handle(dissect_amr_name, proto_amr); + for (ftr=amr_capability_tab; ftr->id; ftr++) { + if (ftr->name) + dissector_add_string("h245.gef.name", ftr->id, amr_name_handle); + if (ftr->content_pdu) + dissector_add_string("h245.gef.content", ftr->id, + create_dissector_handle(ftr->content_pdu, proto_amr)); + } + /* Activate the next line for testing with the randpkt tool + dissector_add_uint_with_preference("udp.port", 55555, amr_handle); + */ } /* diff --git a/epan/dissectors/packet-dvb-s2-bb.c b/epan/dissectors/packet-dvb-s2-bb.c index 9d1048193c..300d13df2c 100644 --- a/epan/dissectors/packet-dvb-s2-bb.c +++ b/epan/dissectors/packet-dvb-s2-bb.c @@ -109,9 +109,6 @@ static dissector_handle_t data_handle; static dissector_handle_t mp2t_handle; static dissector_handle_t dvb_s2_modeadapt_handle; -/* The dynamic payload type range which will be dissected as H.264 */ -static range_t *temp_dynamic_payload_type_range = NULL; - void proto_register_dvb_s2_modeadapt(void); void proto_reg_handoff_dvb_s2_modeadapt(void); @@ -2547,7 +2544,7 @@ void proto_register_dvb_s2_modeadapt(void) expert_dvb_s2_gse = expert_register_protocol(proto_dvb_s2_gse); expert_register_field_array(expert_dvb_s2_gse, ei_gse, array_length(ei_gse)); - dvb_s2_modeadapt_module = prefs_register_protocol(proto_dvb_s2_modeadapt, proto_reg_handoff_dvb_s2_modeadapt); + dvb_s2_modeadapt_module = prefs_register_protocol(proto_dvb_s2_modeadapt, NULL); prefs_register_obsolete_preference(dvb_s2_modeadapt_module, "enable"); @@ -2573,11 +2570,7 @@ void proto_register_dvb_s2_modeadapt(void) " Frames with the preferred type", &dvb_s2_try_all_modeadapt); - prefs_register_range_preference(dvb_s2_modeadapt_module, "dynamic.payload.type", - "DVB-S2 RTP dynamic payload types", - "RTP Dynamic payload types which will be interpreted as DVB-S2" - "; values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(dvb_s2_modeadapt_module, "dynamic.payload.type"); register_init_routine(dvb_s2_gse_defragment_init); register_init_routine(&virtual_stream_init); @@ -2589,30 +2582,17 @@ void proto_register_dvb_s2_modeadapt(void) void proto_reg_handoff_dvb_s2_modeadapt(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean prefs_initialized = FALSE; - - if (!prefs_initialized) { - heur_dissector_add("udp", dissect_dvb_s2_modeadapt_heur, "DVB-S2 over UDP", "dvb_s2_udp", proto_dvb_s2_modeadapt, HEURISTIC_DISABLE); - dissector_add_for_decode_as("udp.port", dvb_s2_modeadapt_handle); - ip_handle = find_dissector_add_dependency("ip", proto_dvb_s2_bb); - ipv6_handle = find_dissector_add_dependency("ipv6", proto_dvb_s2_bb); - dvb_s2_table_handle = find_dissector("dvb-s2_table"); - eth_withoutfcs_handle = find_dissector("eth_withoutfcs"); - data_handle = find_dissector("data"); - mp2t_handle = find_dissector_add_dependency("mp2t", proto_dvb_s2_bb); - - dissector_add_string("rtp_dyn_payload_type","DVB-S2", dvb_s2_modeadapt_handle); - - prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, dvb_s2_modeadapt_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } - - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, dvb_s2_modeadapt_handle); + heur_dissector_add("udp", dissect_dvb_s2_modeadapt_heur, "DVB-S2 over UDP", "dvb_s2_udp", proto_dvb_s2_modeadapt, HEURISTIC_DISABLE); + dissector_add_for_decode_as("udp.port", dvb_s2_modeadapt_handle); + ip_handle = find_dissector_add_dependency("ip", proto_dvb_s2_bb); + ipv6_handle = find_dissector_add_dependency("ipv6", proto_dvb_s2_bb); + dvb_s2_table_handle = find_dissector("dvb-s2_table"); + eth_withoutfcs_handle = find_dissector("eth_withoutfcs"); + data_handle = find_dissector("data"); + mp2t_handle = find_dissector_add_dependency("mp2t", proto_dvb_s2_bb); + + dissector_add_string("rtp_dyn_payload_type","DVB-S2", dvb_s2_modeadapt_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", dvb_s2_modeadapt_handle); } /* diff --git a/epan/dissectors/packet-evs.c b/epan/dissectors/packet-evs.c index d8efa96f47..79abd34150 100644 --- a/epan/dissectors/packet-evs.c +++ b/epan/dissectors/packet-evs.c @@ -65,9 +65,6 @@ static int ett_evs_header = -1; static int ett_evs_speech = -1; static int ett_evs_voice_data = -1; -/* The dynamic payload type range which will be dissected as EVS */ -static range_t *temp_dynamic_payload_type_range = NULL; - static const value_string evs_protected_payload_sizes_value[] = { { 48, "EVS Primary SID 2.4" }, { 56, "Special case" }, @@ -1084,13 +1081,9 @@ proto_register_evs(void) proto_register_field_array(proto_evs, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - evs_module = prefs_register_protocol(proto_evs, proto_reg_handoff_evs); + evs_module = prefs_register_protocol(proto_evs, NULL); - prefs_register_range_preference(evs_module, "dynamic.payload.type", - "EVS dynamic payload types", - "Dynamic payload types which will be interpreted as EVS" - "; values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(evs_module, "dynamic.payload.type"); evs_handle = register_dissector("evs", dissect_evs, proto_evs); @@ -1099,22 +1092,8 @@ proto_register_evs(void) void proto_reg_handoff_evs(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean evs_prefs_initialized = FALSE; - - if (!evs_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type", "EVS", evs_handle); - evs_prefs_initialized = TRUE; - } - else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, evs_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } - - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, evs_handle); + dissector_add_string("rtp_dyn_payload_type", "EVS", evs_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", evs_handle); } /* diff --git a/epan/dissectors/packet-h263p.c b/epan/dissectors/packet-h263p.c index baf965b611..64b0fa849f 100644 --- a/epan/dissectors/packet-h263p.c +++ b/epan/dissectors/packet-h263p.c @@ -49,10 +49,6 @@ static gint ett_h263P_extra_hdr = -1; static gint ett_h263P_payload = -1; static gint ett_h263P_data = -1; -/* The dynamic payload type which will be dissected as H.263-1998/H.263-2000 */ - -static range_t *temp_dynamic_payload_type_range = NULL; - static dissector_handle_t h263P_handle; /* RFC 4629 */ @@ -192,21 +188,9 @@ dissect_h263P( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _ void proto_reg_handoff_h263P(void) { - static range_t *dynamic_payload_type_range; - static gboolean h263P_prefs_initialized = FALSE; - - if (!h263P_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type","H263-1998", h263P_handle); - dissector_add_string("rtp_dyn_payload_type","H263-2000", h263P_handle); - h263P_prefs_initialized = TRUE; - } - else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, h263P_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, h263P_handle); + dissector_add_string("rtp_dyn_payload_type","H263-1998", h263P_handle); + dissector_add_string("rtp_dyn_payload_type","H263-2000", h263P_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", h263P_handle); } @@ -385,14 +369,9 @@ proto_register_h263P(void) proto_register_field_array(proto_h263P, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - h263P_module = prefs_register_protocol(proto_h263P, proto_reg_handoff_h263P); + h263P_module = prefs_register_protocol(proto_h263P, NULL); - prefs_register_range_preference(h263P_module, - "dynamic.payload.type", - "H.263-1998 and H.263-2000 dynamic payload types", - "Dynamic payload types which will be interpreted as H.263" - "; values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(h263P_module, "dynamic.payload.type"); h263P_handle = register_dissector("h263P", dissect_h263P, proto_h263P); } diff --git a/epan/dissectors/packet-h264.c b/epan/dissectors/packet-h264.c index 59e873eee9..92cb64c1bb 100644 --- a/epan/dissectors/packet-h264.c +++ b/epan/dissectors/packet-h264.c @@ -253,10 +253,6 @@ static expert_field ei_h264_nal_unit_type_unspecified = EI_INIT; static dissector_handle_t h264_name_handle; -/* The dynamic payload type range which will be dissected as H.264 */ - -static range_t *temp_dynamic_payload_type_range = NULL; - static dissector_handle_t h264_handle; /* syntax tables in subclause 7.3 is equal to @@ -3749,14 +3745,9 @@ proto_register_h264(void) /* Register a configuration option for port */ - h264_module = prefs_register_protocol(proto_h264, proto_reg_handoff_h264); - + h264_module = prefs_register_protocol(proto_h264, NULL); - prefs_register_range_preference(h264_module, "dynamic.payload.type", - "H.264 dynamic payload types", - "Dynamic payload types which will be interpreted as H.264" - "; values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(h264_module, "dynamic.payload.type"); h264_handle = register_dissector("h264", dissect_h264, proto_h264); } @@ -3766,32 +3757,21 @@ proto_register_h264(void) void proto_reg_handoff_h264(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean h264_prefs_initialized = FALSE; - - if (!h264_prefs_initialized) { - h264_capability_t *ftr; - - dissector_add_string("rtp_dyn_payload_type","H264", h264_handle); - dissector_add_string("rtp_dyn_payload_type","H264-SVC", h264_handle); - dissector_add_string("rtp_dyn_payload_type","X-H264UC", h264_handle); - - h264_name_handle = create_dissector_handle(dissect_h264_name, proto_h264); - for (ftr=h264_capability_tab; ftr->id; ftr++) { - if (ftr->name) - dissector_add_string("h245.gef.name", ftr->id, h264_name_handle); - if (ftr->content_pdu) - dissector_add_string("h245.gef.content", ftr->id, create_dissector_handle(ftr->content_pdu, proto_h264)); - } - h264_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, h264_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); + h264_capability_t *ftr; + + dissector_add_string("rtp_dyn_payload_type","H264", h264_handle); + dissector_add_string("rtp_dyn_payload_type","H264-SVC", h264_handle); + dissector_add_string("rtp_dyn_payload_type","X-H264UC", h264_handle); + + h264_name_handle = create_dissector_handle(dissect_h264_name, proto_h264); + for (ftr=h264_capability_tab; ftr->id; ftr++) { + if (ftr->name) + dissector_add_string("h245.gef.name", ftr->id, h264_name_handle); + if (ftr->content_pdu) + dissector_add_string("h245.gef.content", ftr->id, create_dissector_handle(ftr->content_pdu, proto_h264)); } - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, h264_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", h264_handle); } diff --git a/epan/dissectors/packet-h265.c b/epan/dissectors/packet-h265.c index 9a5142044c..c4f9b8e324 100644 --- a/epan/dissectors/packet-h265.c +++ b/epan/dissectors/packet-h265.c @@ -390,10 +390,6 @@ static expert_field ei_h265_format_specific_parameter = EI_INIT; static expert_field ei_h265_oversized_exp_golomb_code = EI_INIT; static expert_field ei_h265_value_to_large = EI_INIT; -/* The dynamic payload type range which will be dissected as H.265 */ - -static range_t *temp_dynamic_payload_type_range = NULL; - static dissector_handle_t h265_handle; static gboolean dependent_slice_segments_enabled_flag = 0; @@ -4663,14 +4659,9 @@ proto_register_h265(void) /* Register a configuration option for port */ - h265_module = prefs_register_protocol(proto_h265, proto_reg_handoff_h265); - + h265_module = prefs_register_protocol(proto_h265, NULL); - prefs_register_range_preference(h265_module, "dynamic.payload.type", - "H.265 dynamic payload types", - "Dynamic payload types which will be interpreted as H.265" - "; values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(h265_module, "dynamic.payload.type"); h265_handle = register_dissector("h265", dissect_h265, proto_h265); } @@ -4679,22 +4670,8 @@ proto_register_h265(void) void proto_reg_handoff_h265(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean h265_prefs_initialized = FALSE; - - if (!h265_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type", "H265", h265_handle); - - h265_prefs_initialized = TRUE; - } - else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, h265_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } - - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, h265_handle); + dissector_add_string("rtp_dyn_payload_type", "H265", h265_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", h265_handle); } /* diff --git a/epan/dissectors/packet-ismacryp.c b/epan/dissectors/packet-ismacryp.c index 1635eff44b..d8f1d77104 100644 --- a/epan/dissectors/packet-ismacryp.c +++ b/epan/dissectors/packet-ismacryp.c @@ -67,7 +67,6 @@ static int proto_ismacryp_v11 = -1; static int proto_ismacryp_v20 = -1; /* parameters set in preferences */ -static range_t *pref_dynamic_payload_type_range = NULL; /* RTP dynamic payload types */ static guint pref_au_size_length = DEFAULT_AU_SIZE_LENGTH; /* default Au size length */ static guint pref_au_index_length = DEFAULT_AU_INDEX_LENGTH; /* default Au index length */ static guint pref_au_index_delta_length = DEFAULT_AU_INDEX_DELTA_LENGTH; /* default Au index delta length */ @@ -854,14 +853,9 @@ void proto_register_ismacryp (void) proto_register_subtree_array (ett, array_length (ett)); /* Register our configuration options for ismacryp */ - /* this registers our preferences, function proto_reg_handoff_ismacryp is called when preferences are applied */ - ismacryp_module = prefs_register_protocol(proto_ismacryp, proto_reg_handoff_ismacryp); + ismacryp_module = prefs_register_protocol(proto_ismacryp, NULL); - prefs_register_range_preference(ismacryp_module, "dynamic.payload.type", - "ISMACryp dynamic payload types", - "Dynamic payload types which will be interpreted as ISMACryp" - "; values must be in the range 1 - 127", - &pref_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(ismacryp_module, "dynamic.payload.type"); prefs_register_enum_preference(ismacryp_module, "version", "ISMACryp version", @@ -993,31 +987,17 @@ void proto_register_ismacryp (void) void proto_reg_handoff_ismacryp(void) { - static gboolean ismacryp_prefs_initialized = FALSE; - static dissector_handle_t ismacryp_handle; - static range_t *dynamic_payload_type_range; - - if (!ismacryp_prefs_initialized) { - dissector_handle_t ismacryp_v11_handle; - dissector_handle_t ismacryp_v20_handle; - ismacryp_handle = create_dissector_handle(dissect_ismacryp, proto_ismacryp); - ismacryp_v11_handle = create_dissector_handle(dissect_ismacryp_v11, proto_ismacryp_v11); - ismacryp_v20_handle = create_dissector_handle(dissect_ismacryp_v20, proto_ismacryp_v20); - ismacryp_prefs_initialized = TRUE; - dissector_add_string("rtp_dyn_payload_type", "ISMACRYP", ismacryp_handle); - dissector_add_string("rtp_dyn_payload_type", "enc-mpeg4-generic", ismacryp_v11_handle); - dissector_add_string("rtp_dyn_payload_type", "enc-isoff-generic", ismacryp_v20_handle); - } - else { /* ismacryp_prefs_initialized = TRUE */ - /* delete existing association of ismacryp with payload_type */ - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, ismacryp_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } - /* always do the following */ - /* update payload_type to new value */ - dynamic_payload_type_range = range_copy(wmem_epan_scope(), pref_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, ismacryp_handle); + dissector_handle_t ismacryp_handle; + dissector_handle_t ismacryp_v11_handle; + dissector_handle_t ismacryp_v20_handle; + + ismacryp_handle = create_dissector_handle(dissect_ismacryp, proto_ismacryp); + ismacryp_v11_handle = create_dissector_handle(dissect_ismacryp_v11, proto_ismacryp_v11); + ismacryp_v20_handle = create_dissector_handle(dissect_ismacryp_v20, proto_ismacryp_v20); + dissector_add_string("rtp_dyn_payload_type", "ISMACRYP", ismacryp_handle); + dissector_add_string("rtp_dyn_payload_type", "enc-mpeg4-generic", ismacryp_v11_handle); + dissector_add_string("rtp_dyn_payload_type", "enc-isoff-generic", ismacryp_v20_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", ismacryp_handle); } diff --git a/epan/dissectors/packet-iuup.c b/epan/dissectors/packet-iuup.c index 424589544c..4fa17d8ced 100644 --- a/epan/dissectors/packet-iuup.c +++ b/epan/dissectors/packet-iuup.c @@ -151,8 +151,6 @@ static dissector_handle_t iuup_handle; static gboolean dissect_fields = FALSE; static gboolean two_byte_pseudoheader = FALSE; -static range_t *global_dynamic_payload_type_range = 0; - #define PDUTYPE_DATA_WITH_CRC 0 #define PDUTYPE_DATA_NO_CRC 1 @@ -821,21 +819,9 @@ static int find_iuup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* void proto_reg_handoff_iuup(void) { - static gboolean iuup_prefs_initialized = FALSE; - static range_t *saved_dynamic_payload_type_range = NULL; - - if (!iuup_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type","VND.3GPP.IUFP", iuup_handle); - iuup_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", saved_dynamic_payload_type_range, iuup_handle); - wmem_free(wmem_epan_scope(), saved_dynamic_payload_type_range); - } - - saved_dynamic_payload_type_range = range_copy(wmem_epan_scope(), global_dynamic_payload_type_range); + dissector_add_string("rtp_dyn_payload_type","VND.3GPP.IUFP", iuup_handle); - range_remove_value(wmem_epan_scope(), &saved_dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", saved_dynamic_payload_type_range, iuup_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", iuup_handle); } @@ -974,7 +960,7 @@ void proto_register_iuup(void) { circuits = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal); - iuup_module = prefs_register_protocol(proto_iuup, proto_reg_handoff_iuup); + iuup_module = prefs_register_protocol(proto_iuup, NULL); prefs_register_bool_preference(iuup_module, "dissect_payload", "Dissect IuUP Payload bits", @@ -986,11 +972,7 @@ void proto_register_iuup(void) { "The payload contains a two byte pseudoheader indicating direction and circuit_id", &two_byte_pseudoheader); - prefs_register_range_preference(iuup_module, "dynamic.payload.type", - "IuUP dynamic payload type", - "Dynamic payload types which will be interpreted as IuUP" - "; values must be in the range 1 - 127", - &global_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(iuup_module, "dynamic.payload.type"); } /* diff --git a/epan/dissectors/packet-lapd.c b/epan/dissectors/packet-lapd.c index 5101d1b030..78e6bf35ba 100644 --- a/epan/dissectors/packet-lapd.c +++ b/epan/dissectors/packet-lapd.c @@ -69,7 +69,6 @@ static gint ett_lapd_address = -1; static gint ett_lapd_control = -1; static gint ett_lapd_checksum = -1; -static range_t *pref_lapd_rtp_payload_type_range = NULL; static guint pref_lapd_sctp_ppi = 0; static expert_field ei_lapd_abort = EI_INIT; @@ -787,11 +786,7 @@ proto_register_lapd(void) "Use GSM SAPI values", "Use SAPI values as specified in TS 48 056", &global_lapd_gsm_sapis); - prefs_register_range_preference(lapd_module, "rtp_payload_type", - "RTP payload types for embedded LAPD", - "RTP payload types for embedded LAPD" - "; values must be in the range 1 - 127", - &pref_lapd_rtp_payload_type_range, 127); + prefs_register_obsolete_preference(lapd_module, "rtp_payload_type"); prefs_register_uint_preference(lapd_module, "sctp_payload_protocol_identifier", "SCTP Payload Protocol Identifier for LAPD", "SCTP Payload Protocol Identifier for LAPD. It is a " @@ -803,7 +798,6 @@ void proto_reg_handoff_lapd(void) { static gboolean init = FALSE; - static range_t* lapd_rtp_payload_type_range = NULL; static guint lapd_sctp_ppi; dissector_handle_t lapd_frame_handle; @@ -817,20 +811,14 @@ proto_reg_handoff_lapd(void) dissector_add_for_decode_as("sctp.ppi", lapd_handle); dissector_add_for_decode_as("sctp.port", lapd_handle); dissector_add_uint_range_with_preference("udp.port", "", lapd_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", lapd_bitstream_handle); init = TRUE; } else { - dissector_delete_uint_range("rtp.pt", lapd_rtp_payload_type_range, lapd_bitstream_handle); - wmem_free(wmem_epan_scope(), lapd_rtp_payload_type_range); - if (lapd_sctp_ppi > 0) dissector_delete_uint("sctp.ppi", lapd_sctp_ppi, lapd_handle); } - lapd_rtp_payload_type_range = range_copy(wmem_epan_scope(), pref_lapd_rtp_payload_type_range); - range_remove_value(wmem_epan_scope(), &lapd_rtp_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", lapd_rtp_payload_type_range, lapd_bitstream_handle); - lapd_sctp_ppi = pref_lapd_sctp_ppi; if (lapd_sctp_ppi > 0) dissector_add_uint("sctp.ppi", lapd_sctp_ppi, lapd_handle); diff --git a/epan/dissectors/packet-mp4ves.c b/epan/dissectors/packet-mp4ves.c index 820c8e467c..0f22c09a6b 100644 --- a/epan/dissectors/packet-mp4ves.c +++ b/epan/dissectors/packet-mp4ves.c @@ -57,10 +57,6 @@ static expert_field ei_mp4ves_not_dissected_bits = EI_INIT; static dissector_handle_t mp4ves_name_handle; -/* The dynamic payload types which will be dissected as MP4V-ES */ - -static range_t *global_dynamic_payload_type_range = NULL; - static dissector_handle_t mp4ves_handle; /* @@ -1012,44 +1008,28 @@ proto_register_mp4ves(void) register_dissector("mp4ves_config", dissect_mp4ves_config, proto_mp4ves); /* Register a configuration option for port */ - mp4ves_module = prefs_register_protocol(proto_mp4ves, proto_reg_handoff_mp4ves); + mp4ves_module = prefs_register_protocol(proto_mp4ves, NULL); - prefs_register_range_preference(mp4ves_module, - "dynamic.payload.type", - "MP4V-ES dynamic payload types", - "Dynamic payload types which will be interpreted as MP4V-ES" - "; values must be in the range 1 - 127", - &global_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(mp4ves_module, "dynamic.payload.type"); } void proto_reg_handoff_mp4ves(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean mp4ves_prefs_initialized = FALSE; - - if (!mp4ves_prefs_initialized) { - mp4ves_capability_t *ftr; + mp4ves_capability_t *ftr; - dissector_add_string("rtp_dyn_payload_type","MP4V-ES", mp4ves_handle); - mp4ves_prefs_initialized = TRUE; + dissector_add_string("rtp_dyn_payload_type","MP4V-ES", mp4ves_handle); - mp4ves_name_handle = create_dissector_handle(dissect_mp4ves_name, proto_mp4ves); - for (ftr=mp4ves_capability_tab; ftr->id; ftr++) { - if (ftr->name) - dissector_add_string("h245.gef.name", ftr->id, mp4ves_name_handle); - if (ftr->content_pdu) - dissector_add_string("h245.gef.content", ftr->id, create_dissector_handle(ftr->content_pdu, proto_mp4ves)); - } - }else{ - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, mp4ves_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); + mp4ves_name_handle = create_dissector_handle(dissect_mp4ves_name, proto_mp4ves); + for (ftr=mp4ves_capability_tab; ftr->id; ftr++) { + if (ftr->name) + dissector_add_string("h245.gef.name", ftr->id, mp4ves_name_handle); + if (ftr->content_pdu) + dissector_add_string("h245.gef.content", ftr->id, create_dissector_handle(ftr->content_pdu, proto_mp4ves)); } - dynamic_payload_type_range = range_copy(wmem_epan_scope(), global_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, mp4ves_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", mp4ves_handle); } /* diff --git a/epan/dissectors/packet-mtp2.c b/epan/dissectors/packet-mtp2.c index d07c0e2994..e6aa336ded 100644 --- a/epan/dissectors/packet-mtp2.c +++ b/epan/dissectors/packet-mtp2.c @@ -159,8 +159,6 @@ static const fragment_items mtp2_frag_items = { static reassembly_table mtp2_reassembly_table; /* variables needed for property registration to wireshark menu */ -static range_t *mtp2_rtp_payload_types; -static range_t *pref_mtp2_rtp_payload_types = NULL; static gboolean reverse_bit_order_mtp2 = FALSE; static expert_field ei_mtp2_checksum_error = EI_INIT; @@ -1276,7 +1274,7 @@ proto_register_mtp2(void) expert_mtp2 = expert_register_protocol(proto_mtp2); expert_register_field_array(expert_mtp2, ei, array_length(ei)); - mtp2_module = prefs_register_protocol(proto_mtp2, proto_reg_handoff_mtp2); + mtp2_module = prefs_register_protocol(proto_mtp2, NULL); prefs_register_bool_preference(mtp2_module, "use_extended_sequence_numbers", "Use extended sequence numbers", @@ -1294,12 +1292,8 @@ proto_register_mtp2(void) "Reverse bit order inside bytes", "Reverse the bit order inside bytes specified in Q.703.", &reverse_bit_order_mtp2); - prefs_register_range_preference(mtp2_module, "rtp_payload_type", - "RTP payload types for embedded packets in RTP stream", - "RTP payload types for embedded packets in RTP stream" - "; values must be in the range 1 - 127", - &pref_mtp2_rtp_payload_types, - 127); + prefs_register_obsolete_preference(mtp2_module, "rtp_payload_type"); + register_init_routine(&mtp2_init_routine); } @@ -1307,8 +1301,7 @@ void proto_reg_handoff_mtp2(void) { dissector_handle_t mtp2_with_phdr_handle; - static dissector_handle_t mtp2_bitstream_handle; - static gboolean init = FALSE; + dissector_handle_t mtp2_bitstream_handle; dissector_add_uint("wtap_encap", WTAP_ENCAP_MTP2, mtp2_handle); mtp2_with_phdr_handle = create_dissector_handle(dissect_mtp2_with_phdr, @@ -1318,18 +1311,10 @@ proto_reg_handoff_mtp2(void) mtp3_handle = find_dissector_add_dependency("mtp3", proto_mtp2); - if (!init) { - mtp2_bitstream_handle = create_dissector_handle(dissect_mtp2_bitstream, proto_mtp2); - dissector_add_string("rtp_dyn_payload_type", "MTP2", mtp2_bitstream_handle); - init = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", mtp2_rtp_payload_types, mtp2_bitstream_handle); - wmem_free(wmem_epan_scope(), mtp2_rtp_payload_types); - } + mtp2_bitstream_handle = create_dissector_handle(dissect_mtp2_bitstream, proto_mtp2); + dissector_add_string("rtp_dyn_payload_type", "MTP2", mtp2_bitstream_handle); - mtp2_rtp_payload_types = range_copy(wmem_epan_scope(), pref_mtp2_rtp_payload_types); - range_remove_value(wmem_epan_scope(), &mtp2_rtp_payload_types, 0); - dissector_add_uint_range("rtp.pt", mtp2_rtp_payload_types, mtp2_bitstream_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", mtp2_bitstream_handle); } /* diff --git a/epan/dissectors/packet-opus.c b/epan/dissectors/packet-opus.c index 9451fed0a1..2c5a64dd88 100644 --- a/epan/dissectors/packet-opus.c +++ b/epan/dissectors/packet-opus.c @@ -25,8 +25,6 @@ void proto_reg_handoff_opus(void); void proto_register_opus(void); -static range_t *g_dynamic_payload_type_range = NULL; - static dissector_handle_t opus_handle; /* Initialize the protocol and registered fields */ @@ -424,17 +422,12 @@ proto_register_opus(void) proto_register_field_array(proto_opus, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - opus_module = prefs_register_protocol(proto_opus, proto_reg_handoff_opus); + opus_module = prefs_register_protocol(proto_opus, NULL); expert_opus = expert_register_protocol(proto_opus); expert_register_field_array(expert_opus, ei, array_length(ei)); - prefs_register_range_preference(opus_module, "dynamic.payload.type", - "OPUS dynamic payload types", - "Dynamic payload types which will be " - "interpreted as OPUS; Values must be in " - "the range 1 - 127", - &g_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(opus_module, "dynamic.payload.type"); opus_handle = register_dissector("opus", dissect_opus, proto_opus); } @@ -442,20 +435,9 @@ proto_register_opus(void) void proto_reg_handoff_opus(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean opus_prefs_initialized = FALSE; - - if (!opus_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type" , "OPUS", opus_handle); - opus_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, opus_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } + dissector_add_string("rtp_dyn_payload_type" , "OPUS", opus_handle); - dynamic_payload_type_range = range_copy(wmem_epan_scope(), g_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, opus_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", opus_handle); } /* diff --git a/epan/dissectors/packet-rtp-events.c b/epan/dissectors/packet-rtp-events.c index 7df82dfc0f..5c89fc035a 100644 --- a/epan/dissectors/packet-rtp-events.c +++ b/epan/dissectors/packet-rtp-events.c @@ -34,12 +34,8 @@ void proto_register_rtp_events(void); void proto_reg_handoff_rtp_events(void); -#define RTP_EVENT_DEFAULT_PT_RANGE "101" -static range_t *rtp_event_payload_type_range = NULL; - -#define CISCO_NSE_DEFAULT_PT_RANGE "100" -static range_t *cisco_nse_pt_range = NULL; - +/* 101 for RTP Event, 100 for Cisco NSE */ +#define RTP_EVENT_DEFAULT_PT_RANGE "100-101" /* RTP Event Fields */ @@ -556,25 +552,9 @@ proto_register_rtp_events(void) /* Register preferences */ - rtp_events_module = prefs_register_protocol (proto_rtp_events, proto_reg_handoff_rtp_events); - range_convert_str(wmem_epan_scope(), &rtp_event_payload_type_range, - RTP_EVENT_DEFAULT_PT_RANGE, 127); - prefs_register_range_preference(rtp_events_module, - "event_payload_type_value", - "Payload Types for RFC2833 RTP Events", - "Payload Types for RFC2833 RTP Events" - "; values must be in the range 1 - 127", - &rtp_event_payload_type_range, 127); - - - range_convert_str(wmem_epan_scope(), &cisco_nse_pt_range, - CISCO_NSE_DEFAULT_PT_RANGE, 127); - prefs_register_range_preference(rtp_events_module, - "cisco_nse_payload_type_value", - "Payload Types for Cisco Named Signaling Events", - "Payload Types for Cisco Named Signaling Events" - "; values must be in the range 1 - 127", - &cisco_nse_pt_range, 127); + rtp_events_module = prefs_register_protocol (proto_rtp_events, NULL); + prefs_register_obsolete_preference(rtp_events_module, "event_payload_type_value"); + prefs_register_obsolete_preference(rtp_events_module, "cisco_nse_payload_type_value"); rtp_events_handle = register_dissector("rtpevent", dissect_rtp_events, proto_rtp_events); rtp_event_tap = register_tap("rtpevent"); @@ -585,31 +565,9 @@ proto_register_rtp_events(void) void proto_reg_handoff_rtp_events(void) { - /* saved_payload_type_value is a temporary place to save */ - /* the value so we can properly reinitialize when the */ - /* settings get changed. */ - static range_t *saved_payload_type_range; - static range_t *saved_cisco_nse_pt_range; - static gboolean rtp_events_prefs_initialized = FALSE; - - if (!rtp_events_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type", "telephone-event", rtp_events_handle); - dissector_add_string("rtp_dyn_payload_type", "X-NSE", rtp_events_handle); - rtp_events_prefs_initialized = TRUE; - } - else { - dissector_delete_uint_range("rtp.pt", saved_payload_type_range, rtp_events_handle); - dissector_delete_uint_range("rtp.pt", saved_cisco_nse_pt_range, rtp_events_handle); - wmem_free(wmem_epan_scope(), saved_payload_type_range); - wmem_free(wmem_epan_scope(), saved_cisco_nse_pt_range); - } - - saved_payload_type_range = range_copy(wmem_epan_scope(), rtp_event_payload_type_range); - saved_cisco_nse_pt_range = range_copy(wmem_epan_scope(), cisco_nse_pt_range); - range_remove_value(wmem_epan_scope(), &saved_payload_type_range, 0); - range_remove_value(wmem_epan_scope(), &saved_cisco_nse_pt_range, 0); - dissector_add_uint_range("rtp.pt", saved_payload_type_range, rtp_events_handle); - dissector_add_uint_range("rtp.pt", saved_cisco_nse_pt_range, rtp_events_handle); + dissector_add_string("rtp_dyn_payload_type", "telephone-event", rtp_events_handle); + dissector_add_string("rtp_dyn_payload_type", "X-NSE", rtp_events_handle); + dissector_add_uint_range_with_preference("rtp.pt", RTP_EVENT_DEFAULT_PT_RANGE, rtp_events_handle); } /* diff --git a/epan/dissectors/packet-rtp-midi.c b/epan/dissectors/packet-rtp-midi.c index c5aeb1a5ea..071823a387 100644 --- a/epan/dissectors/packet-rtp-midi.c +++ b/epan/dissectors/packet-rtp-midi.c @@ -2883,10 +2883,6 @@ static gint ett_rtp_midi_sysex_common_nrt = -1; static gint ett_rtp_midi_sysex_common_tune_note = -1; -static range_t *rtp_midi_payload_type_range = NULL; -static range_t *saved_payload_type_range = NULL; - - static int proto_rtp_midi = -1; @@ -10021,12 +10017,8 @@ proto_register_rtp_midi( void ) proto_register_field_array( proto_rtp_midi, hf, array_length( hf ) ); proto_register_subtree_array( ett, array_length( ett ) ); - rtp_midi_module = prefs_register_protocol( proto_rtp_midi, proto_reg_handoff_rtp_midi ); - prefs_register_range_preference( rtp_midi_module, "midi_payload_type_value", - "Payload Types for RFC 4695/6295 RTP-MIDI", - "Dynamic payload types which will be interpreted as RTP-MIDI" - "; values must be in the range 1 - 127", - &rtp_midi_payload_type_range, 127); + rtp_midi_module = prefs_register_protocol( proto_rtp_midi, NULL ); + prefs_register_obsolete_preference( rtp_midi_module, "midi_payload_type_value"); rtp_midi_handle = register_dissector( RTP_MIDI_DISSECTOR_ABBREVIATION, dissect_rtp_midi, proto_rtp_midi ); } @@ -10035,20 +10027,8 @@ proto_register_rtp_midi( void ) void proto_reg_handoff_rtp_midi( void ) { - static int rtp_midi_prefs_initialized = FALSE; - - - if ( !rtp_midi_prefs_initialized ) { - dissector_add_string("rtp_dyn_payload_type", "rtp-midi", rtp_midi_handle); - rtp_midi_prefs_initialized = TRUE; - } - else { - dissector_delete_uint_range( "rtp.pt", saved_payload_type_range, rtp_midi_handle ); - wmem_free(wmem_epan_scope(), saved_payload_type_range); - } - saved_payload_type_range = range_copy(wmem_epan_scope(), rtp_midi_payload_type_range); - range_remove_value(wmem_epan_scope(), &saved_payload_type_range, 0); - dissector_add_uint_range( "rtp.pt", saved_payload_type_range, rtp_midi_handle ); + dissector_add_string("rtp_dyn_payload_type", "rtp-midi", rtp_midi_handle); + dissector_add_uint_range_with_preference( "rtp.pt", "", rtp_midi_handle ); } diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c index ef21b28fe1..b137c19323 100644 --- a/epan/dissectors/packet-rtp.c +++ b/epan/dissectors/packet-rtp.c @@ -273,7 +273,6 @@ static gboolean desegment_rtp = TRUE; /* RFC2198 Redundant Audio Data */ #define RFC2198_DEFAULT_PT_RANGE "99" -static range_t *rtp_rfc2198_pt_range = NULL; /* Proto data key values */ #define RTP_CONVERSATION_PROTO_DATA 0 @@ -3321,7 +3320,7 @@ proto_register_rtp(void) rtp_hdr_ext_rfc5285_dissector_table = register_dissector_table("rtp.ext.rfc5285.id", "RTP Generic header extension (RFC 5285)", proto_rtp, FT_UINT8, BASE_DEC); - rtp_module = prefs_register_protocol(proto_rtp, proto_reg_handoff_rtp); + rtp_module = prefs_register_protocol(proto_rtp, NULL); prefs_register_bool_preference(rtp_module, "show_setup_info", "Show stream setup information", @@ -3342,12 +3341,7 @@ proto_register_rtp(void) "an invalid or ZRTP packet, a CLASSIC-STUN packet, or a T.38 packet", &global_rtp_version0_type, rtp_version0_types, FALSE); - range_convert_str(wmem_epan_scope(), &rtp_rfc2198_pt_range, RFC2198_DEFAULT_PT_RANGE, 127); - prefs_register_range_preference(rtp_module, - "rfc2198_payload_type", "Payload Types for RFC2198", - "Payload Types for RFC2198 Redundant Audio Data" - "; values must be in the range 1-127", - &rtp_rfc2198_pt_range, 127); + prefs_register_obsolete_preference(rtp_module, "rfc2198_payload_type"); reassembly_table_register(&rtp_reassembly_table, &addresses_reassembly_table_functions); @@ -3359,52 +3353,40 @@ proto_register_rtp(void) void proto_reg_handoff_rtp(void) { - static gboolean rtp_prefs_initialized = FALSE; - static range_t *rtp_saved_rfc2198_pt_range = NULL; + dissector_add_for_decode_as("udp.port", rtp_handle); + dissector_add_for_decode_as("tcp.port", rtp_rfc4571_handle); + dissector_add_string("rtp_dyn_payload_type", "red", rtp_rfc2198_handle); + heur_dissector_add( "udp", dissect_rtp_heur, "RTP over UDP", "rtp_udp", proto_rtp, HEURISTIC_DISABLE); + heur_dissector_add("stun", dissect_rtp_heur, "RTP over TURN", "rtp_stun", proto_rtp, HEURISTIC_DISABLE); + heur_dissector_add("classicstun", dissect_rtp_heur, "RTP over CLASSICSTUN", "rtp_classicstun", proto_rtp, HEURISTIC_DISABLE); + heur_dissector_add("rtsp", dissect_rtp_heur, "RTP over RTSP", "rtp_rtsp", proto_rtp, HEURISTIC_DISABLE); - if (!rtp_prefs_initialized) { + dissector_add_for_decode_as("flip.payload", rtp_handle ); - dissector_add_for_decode_as("udp.port", rtp_handle); - dissector_add_for_decode_as("tcp.port", rtp_rfc4571_handle); - dissector_add_string("rtp_dyn_payload_type", "red", rtp_rfc2198_handle); - heur_dissector_add( "udp", dissect_rtp_heur, "RTP over UDP", "rtp_udp", proto_rtp, HEURISTIC_DISABLE); - heur_dissector_add("stun", dissect_rtp_heur, "RTP over TURN", "rtp_stun", proto_rtp, HEURISTIC_DISABLE); - heur_dissector_add("classicstun", dissect_rtp_heur, "RTP over CLASSICSTUN", "rtp_classicstun", proto_rtp, HEURISTIC_DISABLE); - heur_dissector_add("rtsp", dissect_rtp_heur, "RTP over RTSP", "rtp_rtsp", proto_rtp, HEURISTIC_DISABLE); - dissector_add_for_decode_as("flip.payload", rtp_handle ); + rtcp_handle = find_dissector_add_dependency("rtcp", proto_rtp); + stun_handle = find_dissector_add_dependency("stun-udp", proto_rtp); + classicstun_handle = find_dissector_add_dependency("classicstun", proto_rtp); + classicstun_heur_handle = find_dissector_add_dependency("classicstun-heur", proto_rtp); + stun_heur_handle = find_dissector_add_dependency("stun-heur", proto_rtp); + t38_handle = find_dissector_add_dependency("t38_udp", proto_rtp); + zrtp_handle = find_dissector_add_dependency("zrtp", proto_rtp); + sprt_handle = find_dissector_add_dependency("sprt", proto_rtp); + v150fw_handle = find_dissector("v150fw"); - rtcp_handle = find_dissector_add_dependency("rtcp", proto_rtp); - stun_handle = find_dissector_add_dependency("stun-udp", proto_rtp); - classicstun_handle = find_dissector_add_dependency("classicstun", proto_rtp); - classicstun_heur_handle = find_dissector_add_dependency("classicstun-heur", proto_rtp); - stun_heur_handle = find_dissector_add_dependency("stun-heur", proto_rtp); - t38_handle = find_dissector_add_dependency("t38_udp", proto_rtp); - zrtp_handle = find_dissector_add_dependency("zrtp", proto_rtp); + bta2dp_content_protection_header_scms_t = find_dissector_add_dependency("bta2dp_content_protection_header_scms_t", proto_rtp); + btvdp_content_protection_header_scms_t = find_dissector_add_dependency("btvdp_content_protection_header_scms_t", proto_rtp); + bta2dp_handle = find_dissector_add_dependency("bta2dp", proto_rtp); + btvdp_handle = find_dissector_add_dependency("btvdp", proto_rtp); + sbc_handle = find_dissector_add_dependency("sbc", proto_rtp); - sprt_handle = find_dissector_add_dependency("sprt", proto_rtp); - v150fw_handle = find_dissector("v150fw"); + dissector_add_string("rtp_dyn_payload_type", "v150fw", v150fw_handle); + dissector_add_for_decode_as("rtp.pt", v150fw_handle); - bta2dp_content_protection_header_scms_t = find_dissector_add_dependency("bta2dp_content_protection_header_scms_t", proto_rtp); - btvdp_content_protection_header_scms_t = find_dissector_add_dependency("btvdp_content_protection_header_scms_t", proto_rtp); - bta2dp_handle = find_dissector_add_dependency("bta2dp", proto_rtp); - btvdp_handle = find_dissector_add_dependency("btvdp", proto_rtp); - sbc_handle = find_dissector_add_dependency("sbc", proto_rtp); + dissector_add_for_decode_as("btl2cap.cid", rtp_handle); - dissector_add_string("rtp_dyn_payload_type", "v150fw", v150fw_handle); - dissector_add_for_decode_as("rtp.pt", v150fw_handle); - - dissector_add_for_decode_as("btl2cap.cid", rtp_handle); - - rtp_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", rtp_saved_rfc2198_pt_range, rtp_rfc2198_handle); - wmem_free(wmem_epan_scope(), rtp_saved_rfc2198_pt_range); - } - rtp_saved_rfc2198_pt_range = range_copy(wmem_epan_scope(), rtp_rfc2198_pt_range); - range_remove_value(wmem_epan_scope(), &rtp_saved_rfc2198_pt_range, 0); - dissector_add_uint_range("rtp.pt", rtp_saved_rfc2198_pt_range, rtp_rfc2198_handle); + dissector_add_uint_range_with_preference("rtp.pt", RFC2198_DEFAULT_PT_RANGE, rtp_rfc2198_handle); proto_sdp = proto_get_id_by_filter_name("sdp"); } diff --git a/epan/dissectors/packet-vp8.c b/epan/dissectors/packet-vp8.c index cfc12a3c72..d9edb3c30e 100644 --- a/epan/dissectors/packet-vp8.c +++ b/epan/dissectors/packet-vp8.c @@ -45,8 +45,6 @@ void proto_register_vp8(void); #define BIT_EXT_PICTURE_MASK 0x7FFF #define BIT_PARTITION_SIZE_MASK 0xE0FFFF -static range_t *temp_dynamic_payload_type_range = NULL; - static dissector_handle_t vp8_handle; /* Initialize the protocol and registered fields */ @@ -571,16 +569,12 @@ proto_register_vp8(void) proto_register_field_array(proto_vp8, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - vp8_module = prefs_register_protocol(proto_vp8, proto_reg_handoff_vp8); + vp8_module = prefs_register_protocol(proto_vp8, NULL); expert_vp8 = expert_register_protocol(proto_vp8); expert_register_field_array(expert_vp8, ei, array_length(ei)); - prefs_register_range_preference(vp8_module, "dynamic.payload.type", - "vp8 dynamic payload types", - "Dynamic payload types which will be interpreted as vp8" - "; Values must be in the range 1 - 127", - &temp_dynamic_payload_type_range, 127); + prefs_register_obsolete_preference(vp8_module, "dynamic.payload.type"); vp8_handle = register_dissector("vp8", dissect_vp8, proto_vp8); } @@ -588,20 +582,9 @@ proto_register_vp8(void) void proto_reg_handoff_vp8(void) { - static range_t *dynamic_payload_type_range = NULL; - static gboolean vp8_prefs_initialized = FALSE; - - if (!vp8_prefs_initialized) { - dissector_add_string("rtp_dyn_payload_type" , "VP8", vp8_handle); - vp8_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("rtp.pt", dynamic_payload_type_range, vp8_handle); - wmem_free(wmem_epan_scope(), dynamic_payload_type_range); - } + dissector_add_string("rtp_dyn_payload_type" , "VP8", vp8_handle); - dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range); - range_remove_value(wmem_epan_scope(), &dynamic_payload_type_range, 0); - dissector_add_uint_range("rtp.pt", dynamic_payload_type_range, vp8_handle); + dissector_add_uint_range_with_preference("rtp.pt", "", vp8_handle); } /* diff --git a/epan/prefs.c b/epan/prefs.c index bd86f5a82d..3dd0408f1e 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -5200,8 +5200,8 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) const char* pref_name; }; - /* For now this is only supporting TCP/UDP port dissector preferences - which are assumed to be decimal */ + /* For now this is only supporting TCP/UDP port and RTP payload + * types dissector preferences, which are assumed to be decimal */ /* module_name is the filter name of the destination port preference, * which is usually the same as the original module but not * necessarily (e.g., if the preference is for what is now a PINO.) @@ -5293,6 +5293,25 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) {"sscop.udp.ports", "sscop", "udp.port", 10}, {"tftp.udp_ports", "tftp", "udp.port", 10}, {"tipc.udp.ports", "tipc", "udp.port", 10}, + /* RTP */ + {"amr.dynamic.payload.type", "amr", "rtp.pt", 10}, + {"amr.wb.dynamic.payload.type", "amr_wb", "rtp.pt", 10}, + {"dvb-s2_modeadapt.dynamic.payload.type", "dvb-s2_modeadapt", "rtp.pt", 10}, + {"evs.dynamic.payload.type", "evs", "rtp.pt", 10}, + {"h263p.dynamic.payload.type", "h263p", "rtp.pt", 10}, + {"h264.dynamic.payload.type", "h264", "rtp.pt", 10}, + {"h265.dynamic.payload.type", "h265", "rtp.pt", 10}, + {"ismacryp.dynamic.payload.type", "ismacryp", "rtp.pt", 10}, + {"iuup.dynamic.payload.type", "iuup", "rtp.pt", 10}, + {"lapd.rtp_payload_type", "lapd", "rtp.pt", 10}, + {"mp4ves.dynamic.payload.type", "mp4ves", "rtp.pt", 10}, + {"mtp2.rtp_payload_type", "mtp2", "rtp.pt", 10}, + {"opus.dynamic.payload.type", "opus", "rtp.pt", 10}, + {"rtp.rfc2198_payload_type", "rtp_rfc2198", "rtp.pt", 10}, + {"rtpevent.event_payload_type_value", "rtpevent", "rtp.pt", 10}, + {"rtpevent.cisco_nse_payload_type_value", "rtpevent", "rtp.pt", 10}, + {"rtpmidi.midi_payload_type_value", "rtpmidi", "rtp.pt", 10}, + {"vp8.dynamic.payload.type", "vp8", "rtp.pt", 10}, }; /* These are subdissectors of TPKT/OSITP that used to have a |