Add config option AuthDirPublishIPv6.

Test for config option AuthDirPublishIPv6 == 1 rather than for running
as a bridge authority when deciding whether to care or not about IPv6
OR ports in descriptors.

Implements enhancement #6406.
This commit is contained in:
Linus Nordberg 2012-07-19 23:23:22 +02:00 committed by Nick Mathewson
parent 6208106c18
commit fff842a47c
5 changed files with 16 additions and 5 deletions

4
changes/enh6406 Normal file
View File

@ -0,0 +1,4 @@
o Minor features:
- Add new configure option AuthDirPublishIPv6. Implements
enhancement #6406.

View File

@ -1736,6 +1736,12 @@ DIRECTORY AUTHORITY SERVER OPTIONS
ports. When set to auto, Tor tries to find out if the authority
relay has IPv6 connectivity or not. (Default: auto)
**AuthDirPublishIPv6** **0**|**1**::
Authoritative directories only. When set to 0, Tor will not
include IPv6 OR ports in votes. When set to 1, Tor will vote for
IPv6 OR ports. (Default: 0).
HIDDEN SERVICE OPTIONS
----------------------

View File

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

View File

@ -2468,14 +2468,13 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
strlcpy(rs->nickname, ri->nickname, sizeof(rs->nickname));
rs->or_port = ri->or_port;
rs->dir_port = ri->dir_port;
if (authdir_mode_bridge(options) &&
if (options->AuthDirPublishIPv6 == 1 &&
!tor_addr_is_null(&ri->ipv6_addr) &&
(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 (or we know that we're not on IPv6) so copy it to the
routerstatus. */
/* We're configured for publishing IPv6 OR ports. There's an IPv6
OR port and it's 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

@ -3274,6 +3274,7 @@ typedef struct {
* number of servers per IP address shared
* with an authority. */
int AuthDirHasIPv6Connectivity; /**< Autoboolean: are we on IPv6? */
int AuthDirPublishIPv6; /**< Boolean: should we list IPv6 OR ports? */
/** If non-zero, always vote the Fast flag for any relay advertising
* this amount of capacity or more. */