aboutsummaryrefslogtreecommitdiff
path: root/src/feature/dirauth/reachability.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-09-20 08:09:35 -0400
committerNick Mathewson <nickm@torproject.org>2018-09-20 11:07:42 -0400
commitb54a5e704ff4d3585bdd8459b83d4c522d070fba (patch)
treef0b6b54b67438528f5adecf2cc16cc6e435891af /src/feature/dirauth/reachability.h
parent08e3b88f0774fedb41a6b1c170a710dd12a7cb90 (diff)
downloadtor-b54a5e704ff4d3585bdd8459b83d4c522d070fba.tar.gz
tor-b54a5e704ff4d3585bdd8459b83d4c522d070fba.zip
Split most of dirserv.c into several new modules
In dirauth: * bwauth.c reads and uses bandwidth files * guardfraction.c reads and uses the guardfraction file * reachability.c tests relay reachability * recommend_pkg.c handles the recommended-packages lines. * recv_descs.c handles fingerprint files and processing incoming routerinfos that relays upload to us * voteflag.c computes flag thresholds and sets those thresholds on routerstatuses when computing votes In control: * fmt_serverstatus.c generates the ancient "v1 server status" format that controllers expect. In nodelist: * routerstatus_fmt.c formats routerstatus entries for a consensus, a vote, or for the controller.
Diffstat (limited to 'src/feature/dirauth/reachability.h')
-rw-r--r--src/feature/dirauth/reachability.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/feature/dirauth/reachability.h b/src/feature/dirauth/reachability.h
new file mode 100644
index 0000000000..6e4bf28ca9
--- /dev/null
+++ b/src/feature/dirauth/reachability.h
@@ -0,0 +1,36 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file reachability.h
+ * \brief Header file for reachability.c.
+ **/
+
+#ifndef TOR_REACHABILITY_H
+#define TOR_REACHABILITY_H
+
+/** What fraction (1 over this number) of the relay ID space do we
+ * (as a directory authority) launch connections to at each reachability
+ * test? */
+#define REACHABILITY_MODULO_PER_TEST 128
+
+/** How often (in seconds) do we launch reachability tests? */
+#define REACHABILITY_TEST_INTERVAL 10
+
+/** How many seconds apart are the reachability tests for a given relay? */
+#define REACHABILITY_TEST_CYCLE_PERIOD \
+ (REACHABILITY_TEST_INTERVAL*REACHABILITY_MODULO_PER_TEST)
+
+void dirserv_orconn_tls_done(const tor_addr_t *addr,
+ uint16_t or_port,
+ const char *digest_rcvd,
+ const struct ed25519_public_key_t *ed_id_rcvd);
+int dirserv_should_launch_reachability_test(const routerinfo_t *ri,
+ const routerinfo_t *ri_old);
+void dirserv_single_reachability_test(time_t now, routerinfo_t *router);
+void dirserv_test_reachability(time_t now);
+
+#endif