Make UDP packet handling more efficient.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 7 Dec 2014 23:58:09 +0000 (00:58 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 8 Dec 2014 00:03:05 +0000 (01:03 +0100)
commit46fa12e666badb79e480c4b2399787551f8266d0
tree49c3a4cd770b595d30a84b6db98aa0f77f1d5f6c
parent263d9903826ffb65aec89bdf5d46f72bd183d467
Make UDP packet handling more efficient.

Limit the amount of address/ID lookups to the minimum in all cases:

1) Legacy packets, need an address lookup.
2) Indirect SPTPS packets, need an address lookup + two ID lookups.
3) Direct SPTPS packets, need an ID or an address lookup.

So we start with an address lookup. If the source is an 1.1 node, we know it's an SPTPS packet,
and then the check for direct packets is a simple check if dstid is zero. If not, do the srcid and dstid
lookup. If the source is an 1.0 node, we don't have to do anything else.

If the address is unknown, we first check whether it's from a 1.1 node by assuming it has a valid srcid
and verifying the packet. If not, use the old try_harder().
src/net_packet.c