mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Add a wrapper for a common networkstatus param pattern
We frequently want to check a networkstatus parameter only when it isn't overridden from the torrc file.
This commit is contained in:
parent
2ea5aa7182
commit
039bd01767
@ -2303,6 +2303,25 @@ networkstatus_get_param(const networkstatus_t *ns, const char *param_name,
|
||||
default_val, min_val, max_val);
|
||||
}
|
||||
|
||||
/**
|
||||
* As networkstatus_get_param(), but check torrc_value before checking the
|
||||
* consensus. If torrc_value is in-range, then return it instead of the
|
||||
* value from the consensus.
|
||||
*/
|
||||
int32_t
|
||||
networkstatus_get_overridable_param(const networkstatus_t *ns,
|
||||
int32_t torrc_value,
|
||||
const char *param_name,
|
||||
int32_t default_val,
|
||||
int32_t min_val, int32_t max_val)
|
||||
{
|
||||
if (torrc_value >= min_val && torrc_value <= max_val)
|
||||
return torrc_value;
|
||||
else
|
||||
return networkstatus_get_param(
|
||||
ns, param_name, default_val, min_val, max_val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the consensus parameter that governs the
|
||||
* fixed-point precision of our network balancing 'bandwidth-weights'
|
||||
|
@ -111,6 +111,11 @@ int32_t networkstatus_get_param(const networkstatus_t *ns,
|
||||
const char *param_name,
|
||||
int32_t default_val, int32_t min_val,
|
||||
int32_t max_val);
|
||||
int32_t networkstatus_get_overridable_param(const networkstatus_t *ns,
|
||||
int32_t torrc_value,
|
||||
const char *param_name,
|
||||
int32_t default_val,
|
||||
int32_t min_val, int32_t max_val);
|
||||
int getinfo_helper_networkstatus(control_connection_t *conn,
|
||||
const char *question, char **answer,
|
||||
const char **errmsg);
|
||||
|
@ -1494,6 +1494,15 @@ test_dir_param_voting(void *arg)
|
||||
tt_int_op(-8,OP_EQ, networkstatus_get_param(&vote4, "ab", -12, -100, -8));
|
||||
tt_int_op(0,OP_EQ, networkstatus_get_param(&vote4, "foobar", 0, -100, 8));
|
||||
|
||||
tt_int_op(100,OP_EQ, networkstatus_get_overridable_param(
|
||||
&vote4, -1, "x-yz", 50, 0, 300));
|
||||
tt_int_op(30,OP_EQ, networkstatus_get_overridable_param(
|
||||
&vote4, 30, "x-yz", 50, 0, 300));
|
||||
tt_int_op(0,OP_EQ, networkstatus_get_overridable_param(
|
||||
&vote4, -101, "foobar", 0, -100, 8));
|
||||
tt_int_op(-99,OP_EQ, networkstatus_get_overridable_param(
|
||||
&vote4, -99, "foobar", 0, -100, 8));
|
||||
|
||||
smartlist_add(votes, &vote1);
|
||||
|
||||
/* Do the first tests without adding all the other votes, for
|
||||
|
Loading…
Reference in New Issue
Block a user