Add a few important features:
When we detect that we've lost packets in libpcap, compensate by making some dummy packets to cover the sequence range we missed. Use a constant to guess how much header we missed. Only flag missed packets as errors if we miss a lot of them. Allow for ACKs of partial packets - this is important with the above, since the fake packets can be larger than the real packets that we missed. Mark SACKed packets so we can avoid double-counting them - future SACKs or ACKs can cover those packets, but, in fact, are not really ACKing them. Most of the time spent working on this was dealing with STL semantics. The more I use the STL, the less respect I have for it.
Showing with 214 additions and 35 deletions