mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Add the prop271 fields to entry_guard_t. Not used yet.
This commit is contained in:
parent
043e9b0151
commit
df8256a931
@ -683,6 +683,7 @@ entry_guard_free(entry_guard_t *e)
|
||||
if (!e)
|
||||
return;
|
||||
tor_free(e->chosen_by_version);
|
||||
tor_free(e->sampled_by_version);
|
||||
tor_free(e);
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,10 @@ typedef struct guard_selection_s guard_selection_t;
|
||||
/* Forward declare for entry_guard_t; the real declaration is private. */
|
||||
typedef struct entry_guard_t entry_guard_t;
|
||||
|
||||
#define GUARD_REACHABLE_NO 0
|
||||
#define GUARD_REACHABLE_YES 1
|
||||
#define GUARD_REACHABLE_MAYBE 2
|
||||
|
||||
/* Information about a guard's pathbias status.
|
||||
* These fields are used in circpathbias.c to try to detect entry
|
||||
* nodes that are failing circuits at a suspicious frequency.
|
||||
@ -61,6 +65,43 @@ typedef struct guard_pathbias_t {
|
||||
struct entry_guard_t {
|
||||
char nickname[MAX_NICKNAME_LEN+1];
|
||||
char identity[DIGEST_LEN];
|
||||
ed25519_public_key_t ed_id;
|
||||
|
||||
/* XXXX prop271 DOCDOC document all these fields better */
|
||||
|
||||
/* Persistent fields, present for all sampled guards. */
|
||||
time_t sampled_on_date;
|
||||
time_t unlisted_since_date;
|
||||
char *sampled_by_version;
|
||||
unsigned currently_listed : 1;
|
||||
|
||||
/* Persistent fields, for confirmed guards. */
|
||||
time_t confirmed_on_date; /* 0 if not confirmed */
|
||||
int confirmed_idx; /* -1 if not confirmed; otherwise the order that this
|
||||
* item should occur in the CONFIRMED_GUARDS ordered
|
||||
* list */
|
||||
|
||||
/* ==== Non-persistent fields. */
|
||||
/* == These are used by sampled guards */
|
||||
time_t last_tried_to_connect;
|
||||
unsigned is_reachable : 2; /* One of GUARD_REACHABLE_{NO,YES,MAYBE} */
|
||||
unsigned is_pending : 1;
|
||||
time_t failing_since;
|
||||
|
||||
/* These determine presence in filtered guards and usable-filtered-guards
|
||||
* respectively. */
|
||||
unsigned is_filtered_guard : 1;
|
||||
unsigned is_usable_filtered_guard : 1;
|
||||
|
||||
/**
|
||||
* @name legacy guard selection algorithm fields
|
||||
*
|
||||
* These are used and maintained by the legacy (pre-prop271) entry guard
|
||||
* algorithm. Most of them we will remove as prop271 gets implemented.
|
||||
* The rest we'll migrate over, if they are 100% semantically identical to
|
||||
* their prop271 equivalents. XXXXprop271
|
||||
*/
|
||||
/**@{*/
|
||||
time_t chosen_on_date; /**< Approximately when was this guard added?
|
||||
* "0" if we don't know. */
|
||||
char *chosen_by_version; /**< What tor version added this guard? NULL
|
||||
@ -79,6 +120,8 @@ struct entry_guard_t {
|
||||
time_t last_attempted; /**< 0 if we can connect to this guard, or the time
|
||||
* at which we last failed to connect to it. */
|
||||
|
||||
/**}@*/
|
||||
|
||||
/** Path bias information for this guard. */
|
||||
guard_pathbias_t pb;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user