Add configure option AuthDirHasIPv6Connectivity.

Implements enhancement 5974.
This commit is contained in:
Linus Nordberg 2012-05-28 14:41:04 +02:00 committed by Linus Nordberg
parent cdef2b181a
commit 044da1bf0f
5 changed files with 18 additions and 3 deletions

4
changes/bug5974 Normal file
View File

@ -0,0 +1,4 @@
o Minor features:
- Add new configure option AuthDirHasIPv6Connectivity. Implements
feature #5974.

View File

@ -1728,6 +1728,14 @@ DIRECTORY AUTHORITY SERVER OPTIONS
votes on whether to accept relays as hidden service directories.
(Default: 1)
**AuthDirHasIPv6Connectivity** **0**|**1**|**auto**::
Authoritative directories only. When set to 0, OR ports with an
IPv6 address are being accepted without reachability testing.
When set to 1, IPv6 OR ports are being tested just like IPv4 OR
ports. When set to auto, Tor tries to find out if the authority
relay has IPv6 connectivity or not. (Default: auto)
HIDDEN SERVICE OPTIONS
----------------------

View File

@ -201,6 +201,7 @@ static config_var_t _option_vars[] = {
V(AuthDirListBadExits, BOOL, "0"),
V(AuthDirMaxServersPerAddr, UINT, "2"),
V(AuthDirMaxServersPerAuthAddr,UINT, "5"),
V(AuthDirHasIPv6Connectivity, AUTOBOOL, "auto"),
VAR("AuthoritativeDirectory", BOOL, AuthoritativeDir, "0"),
V(AutomapHostsOnResolve, BOOL, "0"),
V(AutomapHostsSuffixes, CSV, ".onion,.exit"),

View File

@ -2470,11 +2470,12 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
rs->dir_port = ri->dir_port;
if (authdir_mode_bridge(options) &&
!tor_addr_is_null(&ri->ipv6_addr) &&
node->last_reachable6 >= now - REACHABLE_TIMEOUT) {
(options->AuthDirHasIPv6Connectivity == 0 ||
node->last_reachable6 >= now - REACHABLE_TIMEOUT)) {
/* We're a bridge authority (we're not ready for IPv6 relays in
the consensus quite yet). There's an IPv6 OR port and it's
reachable so copy it to the routerstatus. FIXME: If we're not
on IPv6, copy it regardless of reachability. */
reachable (or we know that we're not on IPv6) so copy it to the
routerstatus. */
tor_addr_copy(&rs->ipv6_addr, &ri->ipv6_addr);
rs->ipv6_orport = ri->ipv6_orport;
}

View File

@ -3273,6 +3273,7 @@ typedef struct {
int AuthDirMaxServersPerAuthAddr; /**< Do not permit more than this
* number of servers per IP address shared
* with an authority. */
int AuthDirHasIPv6Connectivity; /**< Autoboolean: are we on IPv6? */
/** If non-zero, always vote the Fast flag for any relay advertising
* this amount of capacity or more. */