commit 70539e3d5e357521616a083a69712605b7b98c23 Author: Nick Mathewson nickm@torproject.org Date: Tue Sep 25 15:39:24 2018 -0400
Move all authdir_mode_*() functions into authmode.h --- src/core/include.am | 1 + src/core/mainloop/connection.c | 1 + src/core/mainloop/mainloop.c | 1 + src/core/or/circuitstats.c | 1 + src/core/or/connection_or.c | 1 + src/feature/control/fmt_serverstatus.c | 1 + src/feature/dirauth/authmode.c | 70 ++++++++++++++++++++++++++++++++++ src/feature/dirauth/authmode.h | 28 ++++++++------ src/feature/dirauth/reachability.c | 1 + src/feature/nodelist/authcert.c | 1 + src/feature/nodelist/dirlist.c | 1 + src/feature/relay/router.c | 51 ------------------------- src/feature/relay/router.h | 6 --- src/feature/stats/rephist.c | 1 + 14 files changed, 96 insertions(+), 69 deletions(-)
diff --git a/src/core/include.am b/src/core/include.am index 5e6e95da1..abbf89f69 100644 --- a/src/core/include.am +++ b/src/core/include.am @@ -138,6 +138,7 @@ LIBTOR_APP_TESTING_A_SOURCES = $(LIBTOR_APP_A_SOURCES)
# The Directory Authority module. MODULE_DIRAUTH_SOURCES = \ + src/feature/dirauth/authmode.c \ src/feature/dirauth/dircollate.c \ src/feature/dirauth/dirvote.c \ src/feature/dirauth/shared_random.c \ diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c index 4231bec01..b858b94cd 100644 --- a/src/core/mainloop/connection.c +++ b/src/core/mainloop/connection.c @@ -77,6 +77,7 @@ #include "core/or/connection_or.h" #include "feature/control/control.h" #include "lib/crypt_ops/crypto_util.h" +#include "feature/dirauth/authmode.h" #include "feature/dircommon/directory.h" #include "feature/dircache/dirserv.h" #include "feature/relay/dns.h" diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c index 105638ffa..6d60b779b 100644 --- a/src/core/mainloop/mainloop.c +++ b/src/core/mainloop/mainloop.c @@ -70,6 +70,7 @@ #include "lib/crypt_ops/crypto_rand.h" #include "feature/dircommon/directory.h" #include "feature/dircache/dirserv.h" +#include "feature/dirauth/authmode.h" #include "feature/dirauth/reachability.h" #include "feature/relay/dns.h" #include "feature/client/dnsserv.h" diff --git a/src/core/or/circuitstats.c b/src/core/or/circuitstats.c index 2f37cdfa1..0429f2c86 100644 --- a/src/core/or/circuitstats.c +++ b/src/core/or/circuitstats.c @@ -43,6 +43,7 @@ #include "lib/math/fp.h" #include "lib/time/tvdiff.h" #include "lib/encoding/confline.h" +#include "feature/dirauth/authmode.h"
#include "core/or/crypt_path_st.h" #include "core/or/origin_circuit_st.h" diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c index ca69fa00d..7902b6c59 100644 --- a/src/core/or/connection_or.c +++ b/src/core/or/connection_or.c @@ -62,6 +62,7 @@ #include "core/or/scheduler.h" #include "feature/nodelist/torcert.h" #include "core/or/channelpadding.h" +#include "feature/dirauth/authmode.h"
#include "core/or/cell_st.h" #include "core/or/cell_queue_st.h" diff --git a/src/feature/control/fmt_serverstatus.c b/src/feature/control/fmt_serverstatus.c index f150832ce..ed9f14ab3 100644 --- a/src/feature/control/fmt_serverstatus.c +++ b/src/feature/control/fmt_serverstatus.c @@ -7,6 +7,7 @@ #include "feature/control/fmt_serverstatus.h"
#include "app/config/config.h" +#include "feature/dirauth/authmode.h" #include "feature/dirauth/voteflags.h"// XXXX remove #include "feature/nodelist/nodelist.h" #include "feature/relay/router.h" diff --git a/src/feature/dirauth/authmode.c b/src/feature/dirauth/authmode.c new file mode 100644 index 000000000..7c900ea7b --- /dev/null +++ b/src/feature/dirauth/authmode.c @@ -0,0 +1,70 @@ +/* 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 authmode.c + * \brief What kind of directory authority are we? + * + * If we're not an authority, these functions are all replaced with 0 in + * authmode.h. + **/ + +#include "core/or/or.h" +#include "app/config/config.h" +#include "feature/dirauth/authmode.h" + +#include "feature/nodelist/routerinfo_st.h" + +/** Return true iff we believe ourselves to be an authoritative + * directory server. + */ +int +authdir_mode(const or_options_t *options) +{ + return options->AuthoritativeDir != 0; +} +/** Return true iff we are an authoritative directory server that is + * authoritative about receiving and serving descriptors of type + * <b>purpose</b> on its dirport. + */ +int +authdir_mode_handles_descs(const or_options_t *options, int purpose) +{ + if (BUG(purpose < 0)) /* Deprecated. */ + return authdir_mode(options); + else if (purpose == ROUTER_PURPOSE_GENERAL) + return authdir_mode_v3(options); + else if (purpose == ROUTER_PURPOSE_BRIDGE) + return authdir_mode_bridge(options); + else + return 0; +} +/** Return true iff we are an authoritative directory server that + * publishes its own network statuses. + */ +int +authdir_mode_publishes_statuses(const or_options_t *options) +{ + if (authdir_mode_bridge(options)) + return 0; + return authdir_mode(options); +} +/** Return true iff we are an authoritative directory server that + * tests reachability of the descriptors it learns about. + */ +int +authdir_mode_tests_reachability(const or_options_t *options) +{ + return authdir_mode(options); +} +/** Return true iff we believe ourselves to be a bridge authoritative + * directory server. + */ +int +authdir_mode_bridge(const or_options_t *options) +{ + return authdir_mode(options) && options->BridgeAuthoritativeDir != 0; +} diff --git a/src/feature/dirauth/authmode.h b/src/feature/dirauth/authmode.h index 8bb961dff..3ca127b82 100644 --- a/src/feature/dirauth/authmode.h +++ b/src/feature/dirauth/authmode.h @@ -2,16 +2,22 @@ /* See LICENSE for licensing information */
/** - * \file mode.h - * \brief Standalone header file for directory authority mode. + * \file authmode.h + * \brief Header file for directory authority mode. **/
#ifndef TOR_DIRAUTH_MODE_H #define TOR_DIRAUTH_MODE_H
+#include "feature/relay/router.h" + #ifdef HAVE_MODULE_DIRAUTH
-#include "feature/relay/router.h" +int authdir_mode(const or_options_t *options); +int authdir_mode_handles_descs(const or_options_t *options, int purpose); +int authdir_mode_publishes_statuses(const or_options_t *options); +int authdir_mode_tests_reachability(const or_options_t *options); +int authdir_mode_bridge(const or_options_t *options);
/* Return true iff we believe ourselves to be a v3 authoritative directory * server. */ @@ -23,16 +29,14 @@ authdir_mode_v3(const or_options_t *options)
#else /* HAVE_MODULE_DIRAUTH */
-/* Without the dirauth module, we can't be a v3 directory authority, ever. */ - -static inline int -authdir_mode_v3(const or_options_t *options) -{ - (void) options; - return 0; -} +#define authdir_mode(options) (((void)(options)),0) +#define authdir_mode_handles_descs(options,purpose) \ + (((void)(options)),((void)(purpose)),0) +#define authdir_mode_publishes_statuses(options) (((void)(options)),0) +#define authdir_mode_tests_reachability(options) (((void)(options)),0) +#define authdir_mode_bridge(options) (((void)(options)),0) +#define authdir_mode_v3(options) (((void)(options)),0)
#endif /* HAVE_MODULE_DIRAUTH */
#endif /* TOR_MODE_H */ - diff --git a/src/feature/dirauth/reachability.c b/src/feature/dirauth/reachability.c index abc7249b6..79c98d3ee 100644 --- a/src/feature/dirauth/reachability.c +++ b/src/feature/dirauth/reachability.c @@ -16,6 +16,7 @@ #include "core/or/channel.h" #include "core/or/channeltls.h" #include "core/or/command.h" +#include "feature/dirauth/authmode.h" #include "feature/nodelist/nodelist.h" #include "feature/nodelist/routerlist.h" #include "feature/nodelist/torcert.h" diff --git a/src/feature/nodelist/authcert.c b/src/feature/nodelist/authcert.c index e070cb142..665105e60 100644 --- a/src/feature/nodelist/authcert.c +++ b/src/feature/nodelist/authcert.c @@ -23,6 +23,7 @@ #include "core/mainloop/mainloop.h" #include "core/or/policies.h" #include "feature/client/bridges.h" +#include "feature/dirauth/authmode.h" #include "feature/dircommon/directory.h" #include "feature/dirclient/dirclient.h" #include "feature/dirclient/dlstatus.h" diff --git a/src/feature/nodelist/dirlist.c b/src/feature/nodelist/dirlist.c index 0935145d8..c14d7df0f 100644 --- a/src/feature/nodelist/dirlist.c +++ b/src/feature/nodelist/dirlist.c @@ -29,6 +29,7 @@ #include "app/config/config.h" #include "core/or/policies.h" #include "feature/control/control.h" +#include "feature/dirauth/authmode.h" #include "feature/dircommon/directory.h" #include "feature/nodelist/dirlist.h" #include "feature/nodelist/networkstatus.h" diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c index 3e19c7b61..cc5c424fe 100644 --- a/src/feature/relay/router.c +++ b/src/feature/relay/router.c @@ -1348,57 +1348,6 @@ net_is_completely_disabled(void) return get_options()->DisableNetwork || we_are_fully_hibernating(); }
-/** Return true iff we believe ourselves to be an authoritative - * directory server. - */ -int -authdir_mode(const or_options_t *options) -{ - return options->AuthoritativeDir != 0; -} -/** Return true iff we are an authoritative directory server that is - * authoritative about receiving and serving descriptors of type - * <b>purpose</b> on its dirport. - */ -int -authdir_mode_handles_descs(const or_options_t *options, int purpose) -{ - if (BUG(purpose < 0)) /* Deprecated. */ - return authdir_mode(options); - else if (purpose == ROUTER_PURPOSE_GENERAL) - return authdir_mode_v3(options); - else if (purpose == ROUTER_PURPOSE_BRIDGE) - return authdir_mode_bridge(options); - else - return 0; -} -/** Return true iff we are an authoritative directory server that - * publishes its own network statuses. - */ -int -authdir_mode_publishes_statuses(const or_options_t *options) -{ - if (authdir_mode_bridge(options)) - return 0; - return authdir_mode(options); -} -/** Return true iff we are an authoritative directory server that - * tests reachability of the descriptors it learns about. - */ -int -authdir_mode_tests_reachability(const or_options_t *options) -{ - return authdir_mode(options); -} -/** Return true iff we believe ourselves to be a bridge authoritative - * directory server. - */ -int -authdir_mode_bridge(const or_options_t *options) -{ - return authdir_mode(options) && options->BridgeAuthoritativeDir != 0; -} - /** Return true iff we are trying to be a server. */ MOCK_IMPL(int, diff --git a/src/feature/relay/router.h b/src/feature/relay/router.h index 52c4ac0bd..7b33069aa 100644 --- a/src/feature/relay/router.h +++ b/src/feature/relay/router.h @@ -61,12 +61,6 @@ int dir_server_mode(const or_options_t *options); int net_is_disabled(void); int net_is_completely_disabled(void);
-int authdir_mode(const or_options_t *options); -int authdir_mode_handles_descs(const or_options_t *options, int purpose); -int authdir_mode_publishes_statuses(const or_options_t *options); -int authdir_mode_tests_reachability(const or_options_t *options); -int authdir_mode_bridge(const or_options_t *options); - uint16_t router_get_active_listener_port_by_type_af(int listener_type, sa_family_t family); uint16_t router_get_advertised_or_port(const or_options_t *options); diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c index 24c73554b..210576b9e 100644 --- a/src/feature/stats/rephist.c +++ b/src/feature/stats/rephist.c @@ -90,6 +90,7 @@ #include "core/or/channelpadding.h" #include "core/or/connection_or.h" #include "app/config/statefile.h" +#include "feature/dirauth/authmode.h"
#include "feature/nodelist/networkstatus_st.h" #include "core/or/or_circuit_st.h"