Ethereal-dev: Re: [Ethereal-dev] Re: [Ethereal-cvs] rev 15744: /trunk/epan/dissectors/: packet

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Ulf Lamping <ulf.lamping@xxxxxx>
Date: Sun, 11 Sep 2005 13:34:09 +0200
Guy Harris wrote:

ulfl@xxxxxxxxxxxx wrote:

 reassemble.c:
I had to change the way the reassemble code works if the dissector is telling that more fragments *will* follow.


That assumes that fragments arrive in order.

They don't always do so.

For example, the fragments of a fragmented IP datagram might well arrive in *reverse* order; I have a capture where that happens. (I seem to remember a claim that some version of Linux sent IP fragments out in reverse order.)

Hmmm, unfortunately, I'm confused now. I understand what you're talking about and I was already questioning myself *how* this "problem" is handled in a any way.

However, in this case I don't understand what the more_frags flag is all about, could someone explain (or even better explain it in the reassemble.h) ...

What my problem is with the DCE/RPC defragmentation, connection oriented TCP based (SMB works equally):

In the connection oriented DCE/RPC fragmentation (connectionless is different here, as it uses sequence numbers), all packets are send in sequence and there's *no* fragment offset inside the packet data, this is handled by the byte position in the TCP stream.

What I've tried is to use the fragment total length as a way to keep the current offset in the fragment data. The end of the last fragment must be the offset of the next one. Assuming that the TCP dissector is working correct, this would be a simple model and should work well. Unfortunately, this doesn't work well with the reassemble code.

Any ideas how to solve this in a better way? Do we have other dissectors doing a similar thing where I could have a look how I could solve this?

Regards, ULFL