Determine peer's reflexive address and port when exchanging keys.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 1 Feb 2010 23:51:44 +0000 (00:51 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 1 Feb 2010 23:51:44 +0000 (00:51 +0100)
commit4a0b9981513059755b9fd15b38fc198f46a0d6f2
tree9634873abedaae1d3f7e1269b68b286970abb0d6
parentd15099e0029578bfd24d6b464b941f4693280001
Determine peer's reflexive address and port when exchanging keys.

To help peers that are behind NAT connect to each other directly via UDP, they
need to know the exact external address and port that they use. Keys exchanged
between NATted peers necessarily go via a third node, which knows this address
and port, and can append this information to the keys, which is in turned used
by the peers.

Since PMTU discovery will immediately trigger UDP communication from both sides
to each other, this should allow direct communication between peers behind
full, address-restricted and port-restricted cone NAT.
src/protocol_key.c