Create TestingDirAuthVoteHSDir like TestingDirAuthVoteExit/Guard

TestingDirAuthVoteHSDir ensures that authorities vote the HSDir flag
for the listed relays regardless of uptime or ORPort connectivity.
Respects the value of VoteOnHidServDirectoriesV2.

Partial fix for bug 14067.
This commit is contained in:
teor 2015-01-10 21:43:31 +11:00
parent e136606fe8
commit f9d57473e1
5 changed files with 32 additions and 4 deletions

View File

@ -0,0 +1,6 @@
o Minor features (authorities, testing):
- Create TestingDirAuthVoteHSDir like TestingDirAuthVoteExit/Guard.
Ensures that authorities vote the HSDir flag for the listed
relays regardless of uptime or ORPort connectivity.
Respects the value of VoteOnHidServDirectoriesV2.
Partial fix for bug 14067. Patch by "teor".

View File

@ -2245,6 +2245,15 @@ The following options are used for running a testing Tor network.
In order for this option to have any effect, **TestingTorNetwork**
has to be set.
[[TestingDirAuthVoteHSDir]] **TestingDirAuthVoteHSDir** __node__,__node__,__...__::
A list of identity fingerprints and country codes and
address patterns of nodes to vote HSDir for regardless of their
uptime and ORPort connectivity. See the **ExcludeNodes** option for more
information on how to specify nodes.
+
In order for this option to have any effect, **TestingTorNetwork**
and **VoteOnHidServDirectoriesV2** both have to be set.
[[TestingEnableConnBwEvent]] **TestingEnableConnBwEvent** **0**|**1**::
If this option is set, then Tor controllers may register for CONN_BW
events. Changing this requires that **TestingTorNetwork** is set.

View File

@ -448,6 +448,7 @@ static config_var_t option_vars_[] = {
V(TestingCertMaxDownloadTries, UINT, "8"),
V(TestingDirAuthVoteExit, ROUTERSET, NULL),
V(TestingDirAuthVoteGuard, ROUTERSET, NULL),
V(TestingDirAuthVoteHSDir, ROUTERSET, NULL),
VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "0"),
{ NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }

View File

@ -2113,9 +2113,10 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
rs->ipv6_orport = ri->ipv6_orport;
}
/* Iff we are in a testing network, use TestingDirAuthVoteExit to
give out Exit flags, and TestingDirAuthVoteGuard to
give out Guard flags. */
/* Iff we are in a testing network, use TestingDirAuthVoteExit,
TestingDirAuthVoteGuard, and TestingDirAuthVoteHSDir to
give out the Exit, Guard, and HSDir flags, respectively.
But don't set the corresponding node flags. */
if (options->TestingTorNetwork) {
if (routerset_contains_routerstatus(options->TestingDirAuthVoteExit,
rs, 0)) {
@ -2123,9 +2124,15 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
}
if (routerset_contains_routerstatus(options->TestingDirAuthVoteGuard,
rs, 0)) {
rs, 0)) {
rs->is_possible_guard = 1;
}
if (routerset_contains_routerstatus(options->TestingDirAuthVoteHSDir,
rs, 0)) {
/* TestingDirAuthVoteHSDir respects VoteOnHidServDirectoriesV2 */
rs->is_hs_dir = vote_on_hsdirs;
}
}
}

View File

@ -4105,6 +4105,11 @@ typedef struct {
* regardless of uptime and bandwidth. */
routerset_t *TestingDirAuthVoteGuard;
/** Relays in a testing network which should be voted HSDir
* regardless of uptime and ORPort connectivity.
* Respects VoteOnHidServDirectoriesV2. */
routerset_t *TestingDirAuthVoteHSDir;
/** Enable CONN_BW events. Only altered on testing networks. */
int TestingEnableConnBwEvent;