On Jul 17, 2009, at 4:06 AM, Tamas Somogyi wrote:

> I implemented my dissector according to Developer's Guide "9.4.2.  
> How to
> reassemble split TCP Packets".
> In my dissector, get_foo_message_len() returns the size of full  
> messages
> in tvb, if it is zero, then it returns the total size of split  
> message.

get_foo_message_len() is supposed to return the size of the *single*  
message at the specified offset in the tvbuff.

> In the above example, it returns the followings in successive calls:
> A1. Input: tvb->length=Size(P1),offset=0
>       Return: Size(m1)+Size(m2)+Size(m3)

It should be returning Size(m1).

tcp_dissect_pdus(), by design and intent, calls your dissector for  
each *message*, not for each *TCP segment*.  That requires the "get  
PDU length" routine to return the length of a single message.

If you want the Info column for a TCP segment to reflect all messages  
whose last byte appears in that segment, you would need to determine  
which of those messages is the first one ending in the segment, in  
that message set the Info column to the information about that  
message, and in all other messages append information about that  
message to the Info column.  I'm not sure how to determine which one  
is the first.
___________________________________________________________________________
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