config: Move bw & other configs into the dirauth module

This commit:
* moves bandwidth checks into dirauth_config, and
* moves some other minor checks into dirauth_config.

The moved code is disabled when the dirauth module is disabled.
(And some of the checks are re-ordered, so the order of some
warnings may change.)

Part of 32213.
This commit is contained in:
teor 2019-10-29 17:57:04 +10:00
parent d5ca56e254
commit 0a511778eb
3 changed files with 54 additions and 20 deletions

View File

@ -3418,13 +3418,6 @@ options_validate_cb(const void *old_options_, void *options_, char **msg)
if (options_init_logs(old_options, options, 1)<0)
REJECT("Failed to validate Log options. See logs for details.");
if (authdir_mode(options)) {
/* confirm that our address isn't broken, so we can complain now */
uint32_t tmp;
if (resolve_my_address(LOG_WARN, options, &tmp, NULL, NULL) < 0)
REJECT("Failed to resolve/guess local address. See logs for details.");
}
/* XXXX require that the only port not be DirPort? */
/* XXXX require that at least one port be listened-upon. */
if (n_ports == 0 && !options->RendConfigLines)
@ -3649,12 +3642,6 @@ options_validate_cb(const void *old_options_, void *options_, char **msg)
if (options_validate_relay_padding(old_options, options, msg) < 0)
return -1;
if (options->MinUptimeHidServDirectoryV2 < 0) {
log_warn(LD_CONFIG, "MinUptimeHidServDirectoryV2 option must be at "
"least 0 seconds. Changing to 0.");
options->MinUptimeHidServDirectoryV2 = 0;
}
const int min_rendpostperiod =
options->TestingTorNetwork ?
MIN_REND_POST_PERIOD_TESTING : MIN_REND_POST_PERIOD;
@ -3833,16 +3820,11 @@ options_validate_cb(const void *old_options_, void *options_, char **msg)
if (ensure_bandwidth_cap(&options->BandwidthBurst,
"BandwidthBurst", msg) < 0)
return -1;
if (ensure_bandwidth_cap(&options->AuthDirFastGuarantee,
"AuthDirFastGuarantee", msg) < 0)
return -1;
if (ensure_bandwidth_cap(&options->AuthDirGuardBWGuarantee,
"AuthDirGuardBWGuarantee", msg) < 0)
return -1;
if (options_validate_relay_bandwidth(old_options, options, msg) < 0)
return -1;
if (options_validate_dirauth_bandwidth(old_options, options, msg) < 0)
return -1;
if (options->BandwidthRate > options->BandwidthBurst)
REJECT("BandwidthBurst must be at least equal to BandwidthRate.");

View File

@ -61,6 +61,11 @@ options_validate_dirauth_mode(const or_options_t *old_options,
return -1;
if (options->AuthoritativeDir) {
/* confirm that our address isn't broken, so we can complain now */
uint32_t tmp;
if (resolve_my_address(LOG_WARN, options, &tmp, NULL, NULL) < 0)
REJECT("Failed to resolve/guess local address. See logs for details.");
if (!options->ContactInfo && !options->TestingTorNetwork)
REJECT("Authoritative directory servers must set ContactInfo");
if (!options->RecommendedClientVersions)
@ -117,6 +122,46 @@ options_validate_dirauth_mode(const or_options_t *old_options,
REJECT("Running as authoritative directory, but ClientOnly also set.");
}
/* 31851: the tests expect us to validate these options, even when we are
* not in authority mode. */
if (options->MinUptimeHidServDirectoryV2 < 0) {
log_warn(LD_CONFIG, "MinUptimeHidServDirectoryV2 option must be at "
"least 0 seconds. Changing to 0.");
options->MinUptimeHidServDirectoryV2 = 0;
}
return 0;
}
/**
* Legacy validation/normalization function for the dirauth bandwidth options
* in options. Uses old_options as the previous options.
*
* Returns 0 on success, returns -1 and sets *msg to a newly allocated string
* on error.
*/
int
options_validate_dirauth_bandwidth(const or_options_t *old_options,
or_options_t *options,
char **msg)
{
(void)old_options;
if (BUG(!options))
return -1;
if (BUG(!msg))
return -1;
/* 31851: the tests expect us to validate these options, even when we are
* not in authority mode. */
if (ensure_bandwidth_cap(&options->AuthDirFastGuarantee,
"AuthDirFastGuarantee", msg) < 0)
return -1;
if (ensure_bandwidth_cap(&options->AuthDirGuardBWGuarantee,
"AuthDirGuardBWGuarantee", msg) < 0)
return -1;
return 0;
}

View File

@ -20,6 +20,10 @@ int options_validate_dirauth_mode(const or_options_t *old_options,
or_options_t *options,
char **msg);
int options_validate_dirauth_bandwidth(const or_options_t *old_options,
or_options_t *options,
char **msg);
int options_validate_dirauth_schedule(const or_options_t *old_options,
or_options_t *options,
char **msg);
@ -56,6 +60,9 @@ options_validate_dirauth_mode(const or_options_t *old_options,
return 0;
}
#define options_validate_dirauth_bandwidth(old_options, options, msg) \
(((void)(old_options)),((void)(options)),((void)(msg)),0)
#define options_validate_dirauth_schedule(old_options, options, msg) \
(((void)(old_options)),((void)(options)),((void)(msg)),0)