summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/feature13161-TestingDirAuthVoteExit7
-rw-r--r--doc/tor.1.txt9
-rw-r--r--src/or/config.c1
-rw-r--r--src/or/dirserv.c15
-rw-r--r--src/or/or.h4
5 files changed, 32 insertions, 4 deletions
diff --git a/changes/feature13161-TestingDirAuthVoteExit b/changes/feature13161-TestingDirAuthVoteExit
new file mode 100644
index 0000000000..d6c8f414a3
--- /dev/null
+++ b/changes/feature13161-TestingDirAuthVoteExit
@@ -0,0 +1,7 @@
+ o Minor features (testing):
+ - Add the TestingDirAuthVoteExit option, a list of nodes to vote
+ Exit for regardless of their uptime, bandwidth, or exit policy.
+ TestingTorNetwork must be set for this option to have any effect.
+ Works around an issue where authorities would take up to 35 minutes
+ to give nodes the Exit flag in a test network, despite short
+ consensus intervals. Partially implements ticket 13161.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index ff178196a8..c0b8c11692 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -2197,6 +2197,15 @@ The following options are used for running a testing Tor network.
Try this often to download a v3 authority certificate before giving up.
Changing this requires that **TestingTorNetwork** is set. (Default: 8)
+[[TestingDirAuthVoteExit]] **TestingDirAuthVoteExit** __node__,__node__,__...__::
+ A list of identity fingerprints, nicknames, country codes and
+ address patterns of nodes to vote Exit for regardless of their
+ uptime, bandwidth, or exit policy. See the **ExcludeNodes**
+ option for more information on how to specify nodes.
+ +
+ In order for this option to have any effect, **TestingTorNetwork**
+ has to be set.
+
[[TestingDirAuthVoteGuard]] **TestingDirAuthVoteGuard** __node__,__node__,__...__::
A list of identity fingerprints, nicknames, country codes and
address patterns of nodes to vote Guard for regardless of their
diff --git a/src/or/config.c b/src/or/config.c
index 921d032529..3b37a123af 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -439,6 +439,7 @@ static config_var_t option_vars_[] = {
V(TestingDescriptorMaxDownloadTries, UINT, "8"),
V(TestingMicrodescMaxDownloadTries, UINT, "8"),
V(TestingCertMaxDownloadTries, UINT, "8"),
+ V(TestingDirAuthVoteExit, ROUTERSET, NULL),
V(TestingDirAuthVoteGuard, ROUTERSET, NULL),
VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "0"),
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 374cfa6f40..c8f47e648e 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -2169,12 +2169,19 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
rs->ipv6_orport = ri->ipv6_orport;
}
- /* Iff we are in a testing network, use TestingDirAuthVoteGuard to
+ /* Iff we are in a testing network, use TestingDirAuthVoteExit to
+ give out Exit flags, and TestingDirAuthVoteGuard to
give out Guard flags. */
- if (options->TestingTorNetwork &&
- routerset_contains_routerstatus(options->TestingDirAuthVoteGuard,
+ if (options->TestingTorNetwork) {
+ if (routerset_contains_routerstatus(options->TestingDirAuthVoteExit,
+ rs, 0)) {
+ rs->is_exit = 1;
+ }
+
+ if (routerset_contains_routerstatus(options->TestingDirAuthVoteGuard,
rs, 0)) {
- rs->is_possible_guard = 1;
+ rs->is_possible_guard = 1;
+ }
}
}
diff --git a/src/or/or.h b/src/or/or.h
index 54cee46ee3..4130ea6351 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -4056,6 +4056,10 @@ typedef struct {
/** Minimum value for the Fast flag threshold on testing networks. */
uint64_t TestingMinFastFlagThreshold;
+ /** Relays in a testing network which should be voted Exit
+ * regardless of exit policy. */
+ routerset_t *TestingDirAuthVoteExit;
+
/** Relays in a testing network which should be voted Guard
* regardless of uptime and bandwidth. */
routerset_t *TestingDirAuthVoteGuard;