static gint ett_rtcp_mcptt_eci = -1;
static gint ett_rtcp_mccp_tmgi = -1;
+static expert_field ei_rtcp_not_final_padding = EI_INIT;
static expert_field ei_rtcp_bye_reason_not_padded = EI_INIT;
static expert_field ei_rtcp_xr_block_length_bad = EI_INIT;
static expert_field ei_rtcp_roundtrip_delay = EI_INIT;
*/
while ( !srtcp_now_encrypted && tvb_bytes_exist( tvb, offset, 4) ) {
guint temp_byte;
+ proto_item *padding_item;
gint elem_count;
guint packet_type;
gint packet_length;
show_setup_info(tvb, pinfo, rtcp_tree);
}
+ if (padding_set)
+ {
+ /* Padding can't yet be set, since there is another packet */
+ expert_add_info(pinfo, padding_item, &ei_rtcp_not_final_padding);
+ }
temp_byte = tvb_get_guint8( tvb, offset );
padding_set = RTCP_PADDING( temp_byte );
padding_offset = offset + packet_length - 1;
- proto_tree_add_boolean( rtcp_tree, hf_rtcp_padding, tvb,
- offset, 1, temp_byte );
+ padding_item = proto_tree_add_boolean( rtcp_tree, hf_rtcp_padding, tvb,
+ offset, 1, temp_byte );
elem_count = RTCP_COUNT( temp_byte );
switch ( packet_type ) {
};
static ei_register_info ei[] = {
+ { &ei_rtcp_not_final_padding, { "rtcp.not_final_padding", PI_PROTOCOL, PI_WARN, "Padding flag set on not final packet (see RFC3550, section 6.4.1)", EXPFILL }},
{ &ei_rtcp_bye_reason_not_padded, { "rtcp.bye_reason_not_padded", PI_MALFORMED, PI_WARN, "Reason string is not NULL padded (see RFC3550, section 6.6)", EXPFILL }},
{ &ei_rtcp_xr_block_length_bad, { "rtcp.invalid_block_length", PI_PROTOCOL, PI_WARN, "Invalid block length, should be 2", EXPFILL }},
{ &ei_rtcp_roundtrip_delay, { "rtcp.roundtrip-delay.expert", PI_SEQUENCE, PI_NOTE, "RTCP round-trip delay detected (%d ms)", EXPFILL }},