[PMTUd] rework the whole math to calculate MTU
internal changes:
- drop the concept of sec_header_size that was completely wrong and unnecessary
- bump crypto API to version 3 due to the above change
- clarify the difference between link->proto_overhead and link->status->proto_overhead. We cannot rename the status one as it would also change ABI.
- add onwire.c with documentation on the packet format and what various len(s) mean in context.
- add 3 new functions to calculate MTUs back and forth and use them around, hopefully with enough clarification on why things are done in a given way.
- heavily change thread_pmtud.c to use those new facilities.
- fix major calculation issues when using crypto (non-crypto was not affected by the problem).
- fix checks around to make sure they match the new math.
- fix padding calculation.
- add functional PMTUd crypto test this test can take several hours (12+) and should be executed on a controlled environment since it automatically changes loopback MTU to run tests.
- fix way the lowest MTU is calculated during a PMTUd run to avoid spurious double notifications.
- drop redundant checks.
user visible changes:
- Global MTU is now calculated properly when using crypto and values will be in general bigger than before due to incorrect padding calculation in the previous implementation.
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>