aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJohn Thacker <johnthacker@gmail.com>2022-07-29 23:56:20 -0400
committerA Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2022-07-31 07:37:11 +0000
commit5c15ebb9a23d1c9a7773d2eccf1df634ac5ff168 (patch)
tree86935b04529cd5fe25271d88f2dcfd5aab671d74 /epan
parent39ca9db96a83c6c4fae8c7463d3ba6b66624e349 (diff)
prefs: Convert most RTP dissectors to use "auto" PT preferences
Similar to commit 2eb7b05b8c9c6408268f0d1e81f0a18a02610f1c, replace the RTP payload type preferences with automatic dissectors. This reduces the number of preference module callbacks.
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-amr.c77
-rw-r--r--epan/dissectors/packet-dvb-s2-bb.c46
-rw-r--r--epan/dissectors/packet-evs.c29
-rw-r--r--epan/dissectors/packet-h263p.c31
-rw-r--r--epan/dissectors/packet-h264.c50
-rw-r--r--epan/dissectors/packet-h265.c31
-rw-r--r--epan/dissectors/packet-ismacryp.c46
-rw-r--r--epan/dissectors/packet-iuup.c26
-rw-r--r--epan/dissectors/packet-lapd.c16
-rw-r--r--epan/dissectors/packet-mp4ves.c42
-rw-r--r--epan/dissectors/packet-mtp2.c29
-rw-r--r--epan/dissectors/packet-opus.c26
-rw-r--r--epan/dissectors/packet-rtp-events.c58
-rw-r--r--epan/dissectors/packet-rtp-midi.c28
-rw-r--r--epan/dissectors/packet-rtp.c74
-rw-r--r--epan/dissectors/packet-vp8.c25
-rw-r--r--epan/prefs.c23
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