aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rtcp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2021-09-17 14:57:46 +0200
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-09-17 13:23:35 +0000
commitb2bc8fd05945a8213aedd052d6b5958513ca4d18 (patch)
tree09bd162006f0788d29ddf644ec334fbaf81ed35a /epan/dissectors/packet-rtcp.c
parentfea994855d6e67868b8097bf034e868132c0d8a8 (diff)
RTCP:Fix dissection of MBMS Subchannel field
Diffstat (limited to 'epan/dissectors/packet-rtcp.c')
-rw-r--r--epan/dissectors/packet-rtcp.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c
index a8061b1dbc..bbd8d99432 100644
--- a/epan/dissectors/packet-rtcp.c
+++ b/epan/dissectors/packet-rtcp.c
@@ -2769,19 +2769,24 @@ dissect_rtcp_app_mccp(tvbuff_t* tvb, packet_info* pinfo, int offset, proto_tree*
* number of the" m=audio" m-line in the SIP MESSAGE request announcing
* the MBMS bearer described in 3GPP TS 24.379
*/
- guint32 ip_ver;
+ guint32 ip_ver, floor_m_line_no;
proto_tree_add_item(sub_tree, hf_rtcp_mccp_audio_m_line_no, tvb, offset, 1, ENC_BIG_ENDIAN);
/* The <Floor m-line Number> value shall consist of 4 bit parameter giving the
* number of the "m=application" m-line in the SIP MESSAGE request announcing
* the MBMS bearer described in 3GPP TS 24.379 */
- proto_tree_add_item(sub_tree, hf_rtcp_mccp_floor_m_line_no, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_uint(sub_tree, hf_rtcp_mccp_floor_m_line_no, tvb, offset, 1, ENC_BIG_ENDIAN, &floor_m_line_no);
offset += 1;
/* IP version */
proto_tree_add_item_ret_uint(sub_tree, hf_rtcp_mccp_ip_version, tvb, offset, 1, ENC_BIG_ENDIAN, &ip_ver);
offset += 1;
- /* Floor Port Number */
- proto_tree_add_item(sub_tree, hf_rtcp_mccp_floor_port_no, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* Floor Port Number
+ * If the <Floor m-line Number> value is equal to '0',
+ * the <Floor control Port Number> value is not included in the MBMS Subchannel field.
+ */
+ if (floor_m_line_no > 0) {
+ proto_tree_add_item(sub_tree, hf_rtcp_mccp_floor_port_no, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
/* Medis Port Number */
proto_tree_add_item(sub_tree, hf_rtcp_mccp_media_port_no, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;