Ethereal-dev: Re: [Ethereal-dev] Do I have to free tvbuff's?

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

Date: Wed, 8 Nov 2000 16:52:15 -0600
No, it's handled for you automatically. That is, the top-most
TVBUFF_REAL_DATA
that is created in dissect_packet() (the top-most dissector) is freed via
tvb_free_chain(),
and all tvbuffs created from it or its progeny are freed too. So the entire
chain of
TVBUFF_SUBSETs that are created from one another, ultimately proceeding
from the
initial TVBUFF_REAL_DATA, are freed.

It's more complicated than that... reference counts of usage (within a
tvbuff chain) are
kept because TVBUFF_COMPOSITEs can't be freed until all tvbuff's that they
use are
freed. But Ethereal does't use the TVBUFF_COMPOSITE type yet.

--gilbert

Mark Atwood <mra@xxxxxxxxx> on 11/08/2000 04:35:22 PM

To:   ethereal-dev@xxxxxxxxxxxx
cc:    (bcc: Gilbert Ramirez/Tivoli Systems)
Subject:  [Ethereal-dev] Do I have to free tvbuff's?





I'm porting my dissector over to tvbuffs. Do I have to free a tvbuff
before it goes out of scope?

I first dissect the header, adn then do something like the following
to dissect the payload..

     /* dissect a single payload */
     {
       tvbuff_t *payload_tvb;

       payload_tvb
         = tvb_new_subset(tvb, header_size), -1,
                    sizeof_payloadpart(peeled_iquery_header.type));

       dissect_my_payload(payload_type,
                     payload_tvb,
                     tree_my_payload);
     }

_______________________________________________
Ethereal-dev mailing list
Ethereal-dev@xxxxxxxxxxxx
http://www.ethereal.com/mailman/listinfo/ethereal-dev