beware:
if the dissector gets called in a different way pinfo->private_data
may contain who knows what...
This might be true for all dissectors,
neither the DLT_USER nor K12 do anything with pinfo->private_data and
if the dissector is registered by name they could call it without
calling RTP's first.
On Wed, Apr 23, 2008 at 3:53 PM, Anders Broman
<[EMAIL PROTECTED]> wrote:
> Hi,
> If I understand you correctly (using AMR as example) you have SDP like:
> :
> a=rtpmap:96 AMR/8000/1\r\n
> a=fmtp:96 octet-align=1\r\n
> :
>
> Today the SDP dissector "reads" 96 and connects in to PT 96 which is used by
> the RTP dissector to find the PT dissector, AMR in this case.
> You would like your PT dissetor to also receive the fmtp parameter, which
> actually could be useful for AMR as well.
>
> First I would look into adding this info into the struct:
> typedef struct {
> gint32 pt[SDP_MAX_RTP_PAYLOAD_TYPES];
> gint8 pt_count;
> GHashTable *rtp_dyn_payload;
> } transport_media_pt_t;
> In packet-sdp.c it could then be read out in packet-rtp.c before calling the
> PT subdissector and sent as pinfo->private data.
> Regards
> Anders
>
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL
> PROTECTED]
> Sent: den 23 april 2008 10:51
> To: [email protected]
> Subject: Re: [Wireshark-dev] how do you get SDP dissector info to useitwitha
> new dissector?
>
>
> Hi,
>
> Thanks for your replies.
>
> To (hopefully) clarify the problem statement, here's something more explicit:
>
> Captured packets:
>
> Example 1: no SDP
> =================
> RTP Payload Type 96 (unkown)
> RTP Payload Type 97 (unkown)
> :
> :
> :
> :
> RTP PT 96 (unkown)
> RTP PT 97 (unkown)
>
> My plugin has as a preference Payload Type to force dissection, so I use the
> following in my code (it works):
>
> dissector_add("rtp.pt", dynamic_payload_type, myprotocol_handle);
>
> So if I enter 96 as my payload type, I get the following for my capture:
>
> MYPROTOCOL (RTP Payload Type 96 (unkown)) - decoded using MYPROTOCOL setup
> parameters 1,2,3, from myprotocol_preferences etc.
> RTP Payload Type 97 (unkown (unkown))
> :
> :
> :
> :
> MYPROTOCOL RTP PT 96
> RTP PT 97
>
> Example 2: SDP, RTP PT set at 0 for examle in myprotocol preferences
> ======================================================================
> Raw data shown, no wireshark dissection
> =========
> SDP/SAP contains list of media types, dynamic payload types and mime-types,
> MYPROTOCOL sdp_setup_parameters
> :
> :
> RTP Payload Type 96
> RTP Payload Type 97
> :
> :
> :
> :
> RTP PT myprotocol_mime_type (96)
> RTP PT 97 myprotocol_mime_type (97)
>
> Now, given that in my code I add myprotocol_mime_type as follows:
> dissector_add_string("rtp_dyn_payload_type", myprotocol_mime_type,
> myprotocol_handle);
>
> Wireshar actually shows the following:
> ========
> SDP/SAP contains list of media types, dynamic payload types and mime-types,
> MYPROTOCOL sdp_setup_parameters
> :
> :
> MYPROTOCOL (RTP Payload Type myprotocol_mime_type (96)) - decoded using
> MYPROTOCOL setup parameters 1,2,3, from myprotocol_preferences etc.
> MYPROTOCOL (RTP Payload Type myprotocol_mime_type (97)) - decoded using
> MYPROTOCOL setup parameters 1,2,3, from myprotocol_preferences etc.
> :
> :
> MYPROTOCOL (RTP Payload Type myprotocol_mime_type (96)) - decoded using
> MYPROTOCOL setup parameters 1,2,3, from myprotocol_preferences etc.
> MYPROTOCOL (RTP Payload Type myprotocol_mime_type (97)) - decoded using
> MYPROTOCOL setup parameters 1,2,3, from myprotocol_preferences etc.
>
>
> Problem statement
> ================
> So far so good, SDP media type declaration is automatically used by
> wireshark to associate the relevant dynamic payload type number to the
> declare mime-type, which then "launches" the proper protocol dissection *BUT*
>
> myprotocol dissector uses myprotocol_preferences setup parameters for
> decoding, rather than the parameters in SDP i.e. sdp_setup_parameters for PT
> 96 and sdp_setup_parameters for PT 97.
>
> Possible solutions
> ==================
> You recommend adding information to the SDP data structure, I gather you
> mean actually adding the SDP setup parameters for myprotocol in the SDP
> dissector? Or can I do it "dynamically" from within myprotocol dissector?
>
> Alternatively, given wireshark explicitly shows for each correctly decoded
> RTP packet [Stream setup by SDP] for each packet for which the PT has been
> found in SDP, can I fetch/search the relevant information from within the
> packet dissected within my dissector code?
>
> i.e. can I use tvb or something like pinfo-> SDP parameter ????
> or do I need to fetch it from the relevant packet containing the SDP?
>
> I'll look at the RTP / SDP dissectors to see what information the
> conversation dissector data can gather, but again, how do I access SDP info
> or RTP info from within my own code?
>
> I'll try and look for myself but as you all know this takes time.
>
> Hope this mail clarifies the problem statement. Thanks for any help /
> advice. The solution might seem obvious to you, but not to me ;-)
>
> Regards,
>
> David
>
>
> -----Message d'origine-----
> De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] De la part de Anders Broman
> Envoyé : mardi 22 avril 2008 17:49 À : Developer support list for Wireshark
> Objet : Re: [Wireshark-dev] how do you get SDP dissector info to use itwitha
> new dissector?
>
> Hi,
> Just to add to what Luis said:
> The SDP dissector hands information to the RTP dissector for the
> conversation in question if your payload dissector Needs any of this info or
> additional info you first have to add it to this information to the SDP data
> structure then the RTP dissector Should hand it to your payload dissector
> which should be called from the RTP dissector or possibly the payload
> Dissector could pick it up from the conversation if the info is stored in the
> conversation dissector data by the SDP or RTP dissector.
>
> Probably this is the function you want to look at void srtp_add_address().
> Regards
> Anders
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Luis EG Ontanon
> Sent: den 22 april 2008 15:25
> To: Developer support list for Wireshark
> Subject: Re: [Wireshark-dev] how do you get SDP dissector info to use itwith
> a new dissector?
>
> I do not understand what you want to do.
>
> If all you want is to get RTP's media dissected just invoking the sdp
> dissector to dissect the sdp buffer might be enough. SDP will take care of
> "registering" the RTP converstations definded in it so that related media
> packets are passed to RTP and that RTP calls the propper dissector for the
> payload.
>
> You can take a look on how packet-rtsp.c or packet-sip.c hand over to sdp
> and how amr or iuup register themselves to be usable as dynamic RTP payload.
>
> Hope this helps
>
>
> On Tue, Apr 22, 2008 at 3:11 PM, <[EMAIL PROTECTED]>
> wrote:
> >
> >
> > Hi everyone,
> >
> > I've been working on a new dissector that I'll hopefully be able to
> > contribute.
> >
> > So far I've used the protocol preferences menu to allow me to "setup"
> > parameters that are usually found in an SDP file or via SDP/SAP or via
>
> > SDP/RTSP.
> >
> > This can be quite tedious as I'm switching between different RTP
> > streams, each having potentially different setup parameters.
> >
> > Hence I would like to try and reuse the already dissected SDP
> > parameters (if
> > found) and use those automatically i.e.
> >
> > If SDP -> Media Format (sdp.media.format) = certain value,
> >
> > then
> > Search SDP -> Media format specific parameters
> (sdp.fmtp.parameter)
> > If found "setup" parameter, "store" the value for that
> > setup parameter and associate it with the associated sdp.media.format
> type
> > End search
> > End SDP search
> >
> > As I expect the SDP information to contain declarations for multiple
> > RTP streams with different dynamic payload types, each having setup
> > parameters for my dissector, what is the best approach I can take?
> >
> > How do I search for any relevant SDP info?
> >
> > I've tried to find relevant examples but haven't exactly succeeded and
>
> > would appreciate a pointer. Wireshark seems extremely powerful but
> > it's rather daunting to a beginner.
> > I came across tapping, but I'm not sure whether I need to get info
> > from the SDP tap, or whether I need to create a tap for my
> > dissector....or even tap at all?!
> >
> > As for using those parameters:
> >
> > Should I define a structure containing all the relevant setup
> > parameters, define a table containing pointers to that structure, and
> > populate it accordingly for each relevant stream i.e. RTP payload type
>
> > in SDP having my setup parameters?
> >
> > The idea would then be to search this table for a matching RTP payload
>
> > type so that my dissector can use the correct setup parameters,
> > extracted automatically from SDP, rather than using the potentially
> > incorrect setup parameters defined in my preferences.
> >
> > Thanks for your help,
> >
> > David
> >
> >
> >
> > _______________________________________________
> > Wireshark-dev mailing list
> > [email protected]
> > http://www.wireshark.org/mailman/listinfo/wireshark-dev
> >
> >
>
>
>
> --
> This information is top security. When you have read it, destroy yourself.
> -- Marshall McLuhan
> _______________________________________________
> Wireshark-dev mailing list
> [email protected]
> http://www.wireshark.org/mailman/listinfo/wireshark-dev
> _______________________________________________
> Wireshark-dev mailing list
> [email protected]
> http://www.wireshark.org/mailman/listinfo/wireshark-dev
> _______________________________________________
> Wireshark-dev mailing list
> [email protected]
> http://www.wireshark.org/mailman/listinfo/wireshark-dev
> _______________________________________________
> Wireshark-dev mailing list
> [email protected]
> http://www.wireshark.org/mailman/listinfo/wireshark-dev
>
--
This information is top security. When you have read it, destroy yourself.
-- Marshall McLuhan
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev