Ethereal-dev: Re: [Ethereal-dev] Patch to prevent rtp/rtcp to register conversationwhen disabl
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Ruud Linders <moztest@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 06 Jul 2004 20:39:40 +0200
Here is a patch which includes the previous one and implements an additional preference in the sdp decoder to be able to switch off calling the RTCP from the SDP decoder. Please apply. THanks Martin Mathieson wrote:
Would it make sense to (also?) add a preference setting to the SDP dissector indicating whether or not RTCP conversations should be created? H.245 and RTSP specify the RTCP port explicity so wouldn't need such an option. Disabling RTCP altogether seems maybe a drastic way to achieve what you want. Martin ----- Original Message ----- From: "Ruud Linders" <moztest@xxxxxxxxxxxxxxxxxxxx> To: <ethereal-dev@xxxxxxxxxxxx> Sent: 03 July 2004 18:04 Subject: [Ethereal-dev] Patch to prevent rtp/rtcp to register conversationwhen disabledHere is a patch (against nightly build 2004-07-02) to prevent both RTCP and RTP to create conversations when the respective protocols are disabled. It solves for me the problem that in packet-sdp.c the function rtp_add_address(... srcport ...) is blindly followed by rtCp_add_address(..srcport+1...). Since the SDP decoder can't now if RTCP is present or not, that seems to be the only way to create a conversation for RTCP. (IFF RTCP is present, it IS at the RTP port + 1) However, in my trace there were no RTCP but instead RTP packets at the srcport+1 which were subsequently decoded wrongly as RTCP. Regards, Ruud Linders---------------------------------------------------------------------------- ------- packet-rtcp.c.20040702 2004-06-30 23:08:58.000000000 +0200 +++ packet-rtcp.c 2004-07-03 18:38:57.000000000 +0200 @@ -248,6 +248,13 @@ struct _rtcp_conversation_info *p_conv_data = NULL; /* + * If protocol isn't enabled, we shouldn't create a conversation + */ + if (!proto_is_protocol_enabled(find_protocol_by_id(proto_rtcp))) { + return; + } + + /* * If this isn't the first time this packet has been processed, * we've already done this work, so we don't need to do it * again. --- packet-rtp.c.20040702 2004-07-01 08:59:38.000000000 +0200 +++ packet-rtp.c 2004-07-03 18:40:31.000000000 +0200 @@ -203,6 +203,13 @@ struct _rtp_conversation_info *p_conv_data = NULL; /* + * If protocol isn't enabled, we shouldn't create a conversation + */ + if (!proto_is_protocol_enabled(find_protocol_by_id(proto_rtp))) { + return; + } + + /* * If this isn't the first time this packet has been processed, * we've already done this work, so we don't need to do it * again.---------------------------------------------------------------------------- ----_______________________________________________ Ethereal-dev mailing list Ethereal-dev@xxxxxxxxxxxx http://www.ethereal.com/mailman/listinfo/ethereal-dev_______________________________________________ Ethereal-dev mailing list Ethereal-dev@xxxxxxxxxxxx http://www.ethereal.com/mailman/listinfo/ethereal-dev
--- packet-rtcp.c.20040702 2004-06-30 23:08:58.000000000 +0200 +++ packet-rtcp.c 2004-07-03 18:38:57.000000000 +0200 @@ -248,6 +248,13 @@ struct _rtcp_conversation_info *p_conv_data = NULL; /* + * If protocol isn't enabled, we shouldn't create a conversation + */ + if (!proto_is_protocol_enabled(find_protocol_by_id(proto_rtcp))) { + return; + } + + /* * If this isn't the first time this packet has been processed, * we've already done this work, so we don't need to do it * again. --- packet-rtp.c.20040702 2004-07-01 08:59:38.000000000 +0200 +++ packet-rtp.c 2004-07-03 18:40:31.000000000 +0200 @@ -203,6 +203,13 @@ struct _rtp_conversation_info *p_conv_data = NULL; /* + * If protocol isn't enabled, we shouldn't create a conversation + */ + if (!proto_is_protocol_enabled(find_protocol_by_id(proto_rtp))) { + return; + } + + /* * If this isn't the first time this packet has been processed, * we've already done this work, so we don't need to do it * again. --- packet-sdp.c.20040702 2004-07-03 18:29:44.000000000 +0200 +++ packet-sdp.c 2004-07-06 20:26:21.000000000 +0200 @@ -53,6 +53,7 @@ #include "rtp_pt.h" #include "packet-rtcp.h" +#include "prefs.h" static dissector_handle_t rtp_handle=NULL; static dissector_handle_t rtcp_handle=NULL; @@ -174,6 +175,11 @@ transport_info_t *transport_info); static void dissect_sdp_media_attribute(tvbuff_t *tvb, proto_item *ti); +/* Global to turn OFF the implicit RTCP decode, because it might not + * be present + */ +static gboolean global_sdp_rtcp_decode = TRUE; + static void dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -386,7 +392,7 @@ "SDP", pinfo->fd->num); } - if(rtcp_handle){ + if(rtcp_handle && global_sdp_rtcp_decode){ ipv4_port++; rtcp_add_address(pinfo, (char *)&ipv4_address, ipv4_port, 0, "SDP", pinfo->fd->num); @@ -1126,6 +1132,8 @@ &ett_sdp_media_attribute, }; + module_t *sdp_module; + proto_sdp = proto_register_protocol("Session Description Protocol", "SDP", "sdp"); proto_register_field_array(proto_sdp, hf, array_length(hf)); @@ -1138,6 +1146,15 @@ * on Windows without stuffing it into the Big Transfer Vector). */ register_dissector("sdp", dissect_sdp, proto_sdp); + + sdp_module = prefs_register_protocol(proto_sdp, NULL); + + prefs_register_bool_preference(sdp_module, "callrtcp", + "For media RTP streams, call RTCP on the next port ", + "When SDP detects an RTP stream, it will call RTP decoder but " + "also RTCP on the RTP port+1", + &global_sdp_rtcp_decode); + } void
- References:
- [Ethereal-dev] Patch to prevent rtp/rtcp to register conversation when disabled
- From: Ruud Linders
- Re: [Ethereal-dev] Patch to prevent rtp/rtcp to register conversationwhen disabled
- From: Martin Mathieson
- [Ethereal-dev] Patch to prevent rtp/rtcp to register conversation when disabled
- Prev by Date: Re: [Ethereal-dev] SMB NetServerEnum2 RAP response incorrect bytes
- Next by Date: Re: [Ethereal-dev] problem with Red Hat 9.0
- Previous by thread: Re: [Ethereal-dev] Patch to prevent rtp/rtcp to register conversationwhen disabled
- Next by thread: Re: [Ethereal-dev] Bug causing ethereal to crash
- Index(es):