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.