Tarjei Knapstad skrev 2010-07-26 10:07:
> On 23 July 2010 13:49, Alan Bowman<[email protected]>  wrote:
>    
>> I have written two dissectors for some protocols I am using, one of
>> which is wrapped inside the other.  Protocol B is used if a particular
>> byte (A6, below) in protocol A is a particular value.  I have
>> registered A using register_dissector_table().  I can create a subset
>> tvb and use dissector_try_port() to get protocol B dissector to be
>> called and to have the data (B0..BN) passed to it.  However, B's
>> dissection also depends on knowing whether A was sent as a broadcast
>> packet or as a direct response to a request, which is stored in A's
>> header (A2).  (Not my design!).  Can anyone suggest how I should pass
>> this information to B?  Should I tack it onto the start of the tvb as
>> a composite buffer, or is there some way of attaching metadata to it?
>> Is there a similar protocol I should look at?
>>
>> A0 A1 A2 A3 A4 A5 A6 B0 B1 B2 ... BN
>>
>> Thanks in advance
>>
>>      
> Alan,
>
> I think this is usually achieved by passing the data along in the
> packet_info->private_data field. In your case I guess it would suffice
> to just pass along a boolean. Hopefully someone will correct me if I'm
> wrong here, but I think the standard procedure is along these lines:
>
>    void* saved_private_data = pinfo->private_data;
>    gboolean isBroadcastPacket = check_if_broadcast_packet(/*...*/);
>    pinfo->private_data =&isBroadcastPacket;
>    dissector_try_port(/*...*/);
>    pinfo->private_data = saved_private_data;
>
> Regards,
> Tarjei
>    
A different solution would be to register two dissector handles for B 
one for the broadcast version and one for the
response version and let A call B trough the appropriate dissector handle.
Regards
Anders

> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list<[email protected]>
> Archives:    http://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
>               mailto:[email protected]?subject=unsubscribe
>
>    

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to