Ethereal-dev: Re: [Ethereal-dev] Van Jacobson dissector.
What data is it reading?  Is there another way to provide it?
"tvb_orig()" is a bit ugly....
I agree, very very ugly indeed.
The VJ dissector needs to replace the compressed tcp/ip header with the 
decompressed version of it.  It is nasty to modify the original tvbuff; the 
path of least resistance is to build a new tvbuff with the decompressed 
header.  After the header decompression both the compressed and the 
decompressed tvbuffs are displayed in separate frames.  In the VJ dissector 
I don't have the bytes preceding the ppp payload which can potentially be 
1-2 bytes for the ppp protocol field to many depending on what ppp is 
running over (pppoe comes to mind).  The requirement therefore is to have a 
means to copy all bytes preceding the tvbuff passed in.
tvb_orig is pretty much the same as offset_from_real_beginning with the 
exception that it returns the pointer to the original tvbuff, in addition 
to the byte offset from the beginning.  This allows me to use tvbuff access 
functions to copy the bytes preceding the VJ tvbuff.  Other methods to 
achieve the same got uglier and uglier.
I tried to minimize the ugliness by having tvb_orig's prototype in tvbuff.h 
defined inside #ifdef's where the assumption is that the ifdef is turned on 
in packet-vj.c only.  tvb_orig can potentially be accessed by other 
protocols by defining tvb_orig as an extern in those dissectors.  At that 
point all I can do is throw up my hands.