mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
config: Move dirauth stats actions into the module
This commit: * moves dirauth stats and mtbf config actions into dirauth_config, * adds thin wrappers to make the moved code compile. The moved code is disabled when the dirauth module is disabled. Part of 32213.
This commit is contained in:
parent
fc5da4ad04
commit
1d4d2deea1
@ -106,7 +106,6 @@
|
||||
#include "feature/rend/rendservice.h"
|
||||
#include "lib/geoip/geoip.h"
|
||||
#include "feature/stats/geoip_stats.h"
|
||||
#include "feature/stats/rephist.h"
|
||||
#include "lib/compress/compress.h"
|
||||
#include "lib/confmgt/structvar.h"
|
||||
#include "lib/crypt_ops/crypto_init.h"
|
||||
@ -1897,7 +1896,8 @@ options_act,(const or_options_t *old_options))
|
||||
if (! or_state_loaded() && running_tor) {
|
||||
if (or_state_load())
|
||||
return -1;
|
||||
rep_hist_load_mtbf_data(time(NULL));
|
||||
if (options_act_dirauth_mtbf(options) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 31851: some of the code in these functions is relay-only */
|
||||
@ -2131,21 +2131,10 @@ options_act,(const or_options_t *old_options))
|
||||
}
|
||||
|
||||
bool print_notice = 0;
|
||||
if (options->BridgeAuthoritativeDir) {
|
||||
time_t now = time(NULL);
|
||||
|
||||
if ((!old_options || !old_options->BridgeAuthoritativeDir) &&
|
||||
options->BridgeAuthoritativeDir) {
|
||||
rep_hist_desc_stats_init(now);
|
||||
print_notice = 1;
|
||||
}
|
||||
|
||||
if (old_options && old_options->BridgeAuthoritativeDir &&
|
||||
!options->BridgeAuthoritativeDir)
|
||||
rep_hist_desc_stats_term();
|
||||
|
||||
if (options_act_relay_stats(old_options, &print_notice) < 0)
|
||||
return -1;
|
||||
if (options_act_dirauth_stats(old_options, &print_notice) < 0)
|
||||
return -1;
|
||||
if (print_notice)
|
||||
options_act_relay_stats_msg();
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "app/config/config.h"
|
||||
|
||||
#include "feature/dircommon/voting_schedule.h"
|
||||
#include "feature/stats/rephist.h"
|
||||
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dirauth/bwauth.h"
|
||||
@ -352,3 +353,75 @@ options_act_dirauth(const or_options_t *old_options)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Fetch the active option list, and take dirauth mtbf actions based on it.
|
||||
* All of the things we do should survive being done repeatedly. If present,
|
||||
* <b>old_options</b> contains the previous value of the options.
|
||||
*
|
||||
* Must be called immediately after a successful or_state_load().
|
||||
*
|
||||
* Return 0 if all goes well, return -1 if it's time to die.
|
||||
*
|
||||
* Note: We haven't moved all the "act on new configuration" logic
|
||||
* into the options_act* functions yet. Some is still in do_hup() and other
|
||||
* places.
|
||||
*/
|
||||
int
|
||||
options_act_dirauth_mtbf(const or_options_t *old_options)
|
||||
{
|
||||
(void)old_options;
|
||||
|
||||
const or_options_t *options = get_options();
|
||||
int running_tor = options->command == CMD_RUN_TOR;
|
||||
|
||||
/* Load dirauth state */
|
||||
if (running_tor) {
|
||||
rep_hist_load_mtbf_data(time(NULL));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Fetch the active option list, and take dirauth statistics actions based
|
||||
* on it. All of the things we do should survive being done repeatedly. If
|
||||
* present, <b>old_options</b> contains the previous value of the options.
|
||||
*
|
||||
* Sets <b>*print_notice_out</b> if we enabled stats, and need to print
|
||||
* a stats log using options_act_relay_stats_msg().
|
||||
*
|
||||
* Return 0 if all goes well, return -1 if it's time to die.
|
||||
*
|
||||
* Note: We haven't moved all the "act on new configuration" logic
|
||||
* into the options_act* functions yet. Some is still in do_hup() and other
|
||||
* places.
|
||||
*/
|
||||
int
|
||||
options_act_dirauth_stats(const or_options_t *old_options,
|
||||
bool *print_notice_out)
|
||||
{
|
||||
if (BUG(!print_notice_out))
|
||||
return -1;
|
||||
|
||||
const or_options_t *options = get_options();
|
||||
|
||||
if (options->BridgeAuthoritativeDir) {
|
||||
time_t now = time(NULL);
|
||||
int print_notice = 0;
|
||||
|
||||
if ((!old_options || !old_options->BridgeAuthoritativeDir) &&
|
||||
options->BridgeAuthoritativeDir) {
|
||||
rep_hist_desc_stats_init(now);
|
||||
print_notice = 1;
|
||||
}
|
||||
if (print_notice)
|
||||
*print_notice_out = 1;
|
||||
}
|
||||
|
||||
/* If we used to have statistics enabled but we just disabled them,
|
||||
stop gathering them. */
|
||||
if (old_options && old_options->BridgeAuthoritativeDir &&
|
||||
!options->BridgeAuthoritativeDir)
|
||||
rep_hist_desc_stats_term();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ typedef struct or_options_t or_options_t;
|
||||
|
||||
#ifdef HAVE_MODULE_DIRAUTH
|
||||
|
||||
#include "lib/cc/torint.h"
|
||||
|
||||
int options_validate_dirauth_mode(const or_options_t *old_options,
|
||||
or_options_t *options,
|
||||
char **msg);
|
||||
@ -33,6 +35,9 @@ int options_validate_dirauth_testing(const or_options_t *old_options,
|
||||
char **msg);
|
||||
|
||||
int options_act_dirauth(const or_options_t *old_options);
|
||||
int options_act_dirauth_mtbf(const or_options_t *old_options);
|
||||
int options_act_dirauth_stats(const or_options_t *old_options,
|
||||
bool *print_notice_out);
|
||||
|
||||
#else
|
||||
|
||||
@ -75,6 +80,12 @@ options_validate_dirauth_mode(const or_options_t *old_options,
|
||||
#define options_act_dirauth(old_options) \
|
||||
(((void)(old_options)),0)
|
||||
|
||||
#define options_act_dirauth_mtbf(old_options) \
|
||||
(((void)(old_options)),0)
|
||||
|
||||
#define options_act_dirauth_stats(old_options, print_notice_out) \
|
||||
(((void)(old_options)),((void)(print_notice_out)),0)
|
||||
|
||||
#endif /* defined(HAVE_MODULE_DIRAUTH) */
|
||||
|
||||
#endif /* !defined(TOR_FEATURE_DIRAUTH_DIRAUTH_CONFIG_H) */
|
||||
|
Loading…
Reference in New Issue
Block a user