addr: Prioritize interface lookup over local hostname

The find_my_address() function now prioritize the local interface over the
local hostname when guessing the IP address.

See proposal 312, section 3.2.1, general case:
https://gitweb.torproject.org/torspec.git/tree/proposals/312-relay-auto-ipv6-addr.txt#n359

The entire unit tests had to be refactored to make this possible. Instead of
hot patching it, it has been rewritten to cover all possible cases and the
test interface has been changed to accomodate both IPv4 and IPv6 in order for
them to be tested identically.

Closes #33238

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet
2020-07-02 09:44:49 -04:00
committed by Nick Mathewson
parent 9b560ea714
commit 45afb31e1c
3 changed files with 283 additions and 713 deletions
+5
View File
@@ -0,0 +1,5 @@
o Minor feature (address discovery):
- If no Address statements are found, relays now prioritize guessing their
address by looking at the local interface instead of the local hostname.
If the interface address can't be found, the local hostname is used.
Closes ticket 33238.