On 2011-12-14 15:02, Chris Maynard wrote:
Bill Meier writes:
I think the long description boils down to the following: Consider
the
collection of tvbs (chain) as a stack of tvbs. packet.c pushes the
initial tvb onto the stack then calls next dissector; After the
dissection is complete, the stack is eventually free'd via a call to
tvb_free_chain in epan_dissect_cleanup. A dissector: - can add new
tvbs
(real, subset, composite) to the stack handed to it; (Subset and
Composite tvbs should reference only tvbs which are towards the
beginning of the same stack). - must not save a pointer to a tvb
from
that stack (handed to it) for use when dissecting another frame
(since
a higher level function may very well free the stack); - can create
its
own tvb stack which the dissector is free to manage as desired.
Bill, this information, plus the recent post entitled, "buffer to
tvb",
got me
wondering if there is perhaps enough useful information here worthy
of a
separate doc/README.tvbuff?
- Chris
+1, documenting such fundamental building blocks is always good.
Eventually
this would end up in section II of the developer guide.
Thanks,
Jaap