mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +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);
|
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
|
* Retrieve the consensus parameter that governs the
|
||||||
* fixed-point precision of our network balancing 'bandwidth-weights'
|
* 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,
|
const char *param_name,
|
||||||
int32_t default_val, int32_t min_val,
|
int32_t default_val, int32_t min_val,
|
||||||
int32_t max_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,
|
int getinfo_helper_networkstatus(control_connection_t *conn,
|
||||||
const char *question, char **answer,
|
const char *question, char **answer,
|
||||||
const char **errmsg);
|
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(-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(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);
|
smartlist_add(votes, &vote1);
|
||||||
|
|
||||||
/* Do the first tests without adding all the other votes, for
|
/* Do the first tests without adding all the other votes, for
|
||||||
|
Loading…
Reference in New Issue
Block a user