Add parameters for new (prop271) guard algorithm.

These are taken from the proposal, and defined there.  Some of them
should turn into consensus parameters.

Also, remove some dead code that was there to make compilation work,
and use ATTR_UNUSED like a normal person.
This commit is contained in:
Nick Mathewson 2016-11-15 08:38:33 -05:00
parent 3c12133038
commit 6a02f9f35a
2 changed files with 24 additions and 14 deletions

View File

@ -151,6 +151,26 @@ should_apply_guardfraction(const networkstatus_t *ns)
} }
/**@}*/ /**@}*/
/**
* @name Parameters for new (prop271) entry guard algorithm.
*/
/* XXXX prop271 some of these should be networkstatus parameters */
#define MIN_SAMPLE_THRESHOLD 15
#define MAX_SAMPLE_THRESHOLD 50
#define GUARD_LIFETIME_DAYS 120
#define REMOVE_UNLISTED_GUARDS_AFTER_DAYS 20
#define MIN_FILTERED_SAMPLE_SIZE 20
#define N_PRIMARY_GUARDS 3
#define PRIMARY_GUARDS_RETRY_SCHEDULE /* XXX prop271 */
#define OTHER_GUARDS_RETRY_SCHEDULE /* XXX prop271 */
#define INTERNET_LIKELY_DOWN_INTERVAL (10*60)
#define NONPRIMARY_GUARD_CONNECT_TIMEOUT 15
#define NONPRIMARY_GUARD_IDLE_TIMEOUT (10*60)
#define MEANINGFUL_RESTRICTION_FRAC 0.2
#define EXTREME_RESTRICTION_FRAC 0.01
#define GUARD_CONFIRMED_MIN_LIFETIME_DAYS 60
/**}@*/
/** Allocate a new guard_selection_t */ /** Allocate a new guard_selection_t */
static guard_selection_t * static guard_selection_t *
@ -254,12 +274,11 @@ randomize_time(time_t now, time_t max_backdate)
/** /**
* DOCDOC * DOCDOC
*/ */
STATIC void ATTR_UNUSED STATIC void
entry_guard_add_to_sample(guard_selection_t *gs, entry_guard_add_to_sample(guard_selection_t *gs,
node_t *node) node_t *node)
{ {
(void) entry_guard_add_to_sample; // XXXX prop271 remove -- unused const int GUARD_LIFETIME = GUARD_LIFETIME_DAYS * 86400;
const int GUARD_LIFETIME = 90 * 86400; // xxxx prop271
tor_assert(gs); tor_assert(gs);
tor_assert(node); tor_assert(node);
@ -296,7 +315,7 @@ entry_guard_add_to_sample(guard_selection_t *gs,
* Return a newly allocated string for encoding the persistent parts of * Return a newly allocated string for encoding the persistent parts of
* <b>guard</b> to the state file. * <b>guard</b> to the state file.
*/ */
STATIC char * ATTR_UNUSED STATIC char *
entry_guard_encode_for_state(entry_guard_t *guard) entry_guard_encode_for_state(entry_guard_t *guard)
{ {
/* /*
@ -356,7 +375,7 @@ entry_guard_encode_for_state(entry_guard_t *guard)
* (if possible) and return an entry_guard_t object for it. Return NULL * (if possible) and return an entry_guard_t object for it. Return NULL
* on complete failure. * on complete failure.
*/ */
STATIC entry_guard_t * ATTR_UNUSED STATIC entry_guard_t *
entry_guard_parse_from_state(const char *s) entry_guard_parse_from_state(const char *s)
{ {
/* Unrecognized entries get put in here. */ /* Unrecognized entries get put in here. */
@ -1776,9 +1795,6 @@ entry_guards_parse_state_for_guard_selection(
const char *state_version = state->TorVersion; const char *state_version = state->TorVersion;
digestmap_t *added_by = digestmap_new(); digestmap_t *added_by = digestmap_new();
if (0) entry_guard_parse_from_state(NULL); // XXXX prop271 remove -- unused
if (0) entry_guard_add_to_sample(NULL, NULL); // XXXX prop271 remove
tor_assert(gs != NULL); tor_assert(gs != NULL);
*msg = NULL; *msg = NULL;
@ -2104,8 +2120,6 @@ entry_guards_update_state(or_state_t *state)
config_line_t **next, *line; config_line_t **next, *line;
guard_selection_t *gs = get_guard_selection_info(); guard_selection_t *gs = get_guard_selection_info();
if (0) entry_guard_encode_for_state(NULL); // XXXX prop271 remove -- unused
tor_assert(gs != NULL); tor_assert(gs != NULL);
tor_assert(gs->chosen_entry_guards != NULL); tor_assert(gs->chosen_entry_guards != NULL);

View File

@ -107,10 +107,6 @@ void signed_descs_update_status_from_consensus_networkstatus(
char *networkstatus_getinfo_helper_single(const routerstatus_t *rs); char *networkstatus_getinfo_helper_single(const routerstatus_t *rs);
char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now); char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
void networkstatus_dump_bridge_status_to_file(time_t now); void networkstatus_dump_bridge_status_to_file(time_t now);
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_param(const networkstatus_t *ns, 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,