Trace parts and Trace part managers

As mentioned above, libnetdude never just loads packets into memory. It can do so upon request, but typically the user will just iterate over packets in a certain trace area, loading them one at a time to perform some operation on them. This creates what is referred to as trace parts — areas of a trace file that are iterated over and stored as a modified part of the file (in code: instances of type LND_TracePart). It is the job of the trace part manager to organize the trace parts in such a way that the user always sees a consistent view of the modified trace. Each trace has such a manager, represented by instances of type LND_TPM.