15 #include "testsupport.h" 20 #define REACHABILITY_MODULO_PER_TEST 128 23 #define REACHABILITY_TEST_INTERVAL 10 26 #define REACHABILITY_TEST_CYCLE_PERIOD \ 27 (REACHABILITY_TEST_INTERVAL*REACHABILITY_MODULO_PER_TEST) 30 #define MAX_EXITPOLICY_SUMMARY_LEN 1000 33 #define MAX_V_LINE_LEN 128 37 DIR_SPOOL_SERVER_BY_DIGEST=1, DIR_SPOOL_SERVER_BY_FP,
38 DIR_SPOOL_EXTRA_BY_DIGEST, DIR_SPOOL_EXTRA_BY_FP,
40 DIR_SPOOL_NETWORKSTATUS,
41 DIR_SPOOL_CONSENSUS_CACHE_ENTRY,
43 #define dir_spool_source_bitfield_t ENUM_BF(dir_spool_source_t) 82 const uint8_t *cce_body;
96 const char *desc, uint8_t purpose,
106 void dirserv_compute_bridge_flag_thresholds(
void);
119 const char *flavor_name,
121 const uint8_t *sha3_as_signed,
123 void dirserv_clear_old_networkstatuses(time_t cutoff);
126 int conn_is_encrypted,
127 const char **msg_out);
132 const char *digest_rcvd,
145 uint32_t authstatus);
151 const char *protocols,
153 int consensus_method,
167 int running_long_enough_to_decide_unreachable(
void);
170 #ifdef DIRSERV_PRIVATE 175 #define MAX_MEASUREMENT_AGE (3*24*60*60) 203 #define spooled_resource_free(sp) \ 204 FREE_AND_NULL(spooled_resource_t, spooled_resource_free_, (sp)) dir_spool_source_bitfield_t spool_source
Definition: dirserv.h:67
void dirserv_set_router_is_running(routerinfo_t *router, time_t now)
Definition: dirserv.c:946
void dirserv_count_measured_bws(const smartlist_t *routers)
Definition: dirserv.c:1453
int dirserv_get_routerdesc_spool(smartlist_t *spools_out, const char *key, dir_spool_source_t source, int conn_is_encrypted, const char **msg_out)
Definition: dirserv.c:2655
int validate_recommended_package_line(const char *line)
Definition: dirserv.c:3494
void dirserv_compute_performance_thresholds(digestmap_t *omit_as_sybil)
Definition: dirserv.c:1475
int dirserv_read_guardfraction_file(const char *fname, smartlist_t *vote_routerstatuses)
Definition: dirserv.c:2433
void cached_dir_decref(cached_dir_t *d)
Definition: dirserv.c:1208
STATIC void dirserv_set_routerstatus_testing(routerstatus_t *rs)
Definition: dirserv.c:2107
int dirserv_get_measured_bw_cache_size(void)
Definition: dirserv.c:1769
was_router_added_t
Definition: or.h:5481
int directory_too_idle_to_fetch_descriptors(const or_options_t *options, time_t now)
Definition: dirserv.c:1191
int directory_fetches_dir_info_early(const or_options_t *options)
Definition: dirserv.c:1127
char * fname
Definition: conscache.c:35
struct spooled_resource_t spooled_resource_t
int connection_dirserv_flushed_some(dir_connection_t *conn)
Definition: dirserv.c:3417
routerstatus_format_type_t
Definition: or.h:5099
Definition: crypto_digest.h:74
void spooled_resource_free_(spooled_resource_t *spooled)
Definition: dirserv.c:3035
Definition: crypto_ed25519.h:23
int directory_fetches_from_authorities(const or_options_t *options)
Definition: dirserv.c:1099
enum was_router_added_t dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
Definition: dirserv.c:664
int directory_caches_unknown_auth_certs(const or_options_t *options)
Definition: dirserv.c:1150
STATIC void dirserv_expire_measured_bw_cache(time_t now)
Definition: dirserv.c:1717
void dirserv_free_fingerprint_list(void)
Definition: dirserv.c:460
char * dirserv_get_flag_thresholds_line(void)
Definition: dirserv.c:1809
int directory_caches_dir_info(const or_options_t *options)
Definition: dirserv.c:1165
int dirserv_should_launch_reachability_test(const routerinfo_t *ri, const routerinfo_t *ri_old)
Definition: dirserv.c:2866
void dirserv_set_cached_consensus_networkstatus(const char *consensus, const char *flavor_name, const common_digests_t *digests, const uint8_t *sha3_as_signed, time_t published)
Definition: dirserv.c:1258
cached_dir_t * new_cached_dir(char *s, time_t published)
Definition: dirserv.c:1219
STATIC int measured_bw_line_apply(measured_bw_line_t *parsed_line, smartlist_t *routerstatuses)
Definition: dirserv.c:2549
Definition: conscache.c:26
Definition: container.h:18
int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, int complain, int *valid_out)
Definition: dirserv.c:502
int dirserv_has_measured_bw(const char *node_id)
Definition: dirserv.c:1762
unsigned spool_eagerly
Definition: dirserv.h:63
int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key, const char **msg)
Definition: dirserv.c:2734
char * routerstatus_format_entry(const routerstatus_t *rs, const char *version, const char *protocols, routerstatus_format_type_t format, int consensus_method, const vote_routerstatus_t *vrs)
Definition: dirserv.c:1856
STATIC int dirserv_read_guardfraction_file_from_str(const char *guardfraction_file_str, smartlist_t *vote_routerstatuses)
Definition: dirserv.c:2318
void dirserv_orconn_tls_done(const tor_addr_t *addr, uint16_t or_port, const char *digest_rcvd, const ed25519_public_key_t *ed_id_rcvd)
Definition: dirserv.c:2803
off_t cached_dir_offset
Definition: dirserv.h:87
uint8_t digest[DIGEST256_LEN]
Definition: dirserv.h:71
int directory_fetches_dir_info_later(const or_options_t *options)
Definition: dirserv.c:1139
void dirserv_single_reachability_test(time_t now, routerinfo_t *router)
Definition: dirserv.c:2891
uint32_t dirserv_router_get_status(const routerinfo_t *router, const char **msg, int severity)
Definition: dirserv.c:276
dir_spool_source_t
Definition: dirserv.h:36
int dirserv_would_reject_router(const routerstatus_t *rs)
Definition: dirserv.c:352
struct cached_dir_t * cached_dir_ref
Definition: dirserv.h:76
#define DIGEST256_LEN
Definition: crypto_digest.h:25
STATIC void dirserv_cache_measured_bw(const measured_bw_line_t *parsed_line, time_t as_of)
Definition: dirserv.c:1676
int directory_permits_begindir_requests(const or_options_t *options)
Definition: dirserv.c:1181
int dirserv_read_measured_bandwidths(const char *from_file, smartlist_t *routerstatuses)
Definition: dirserv.c:2575
void dirserv_set_node_flags_from_authoritative_status(node_t *node, uint32_t authstatus)
Definition: dirserv.c:555
void dirserv_spool_sort(dir_connection_t *conn)
Definition: dirserv.c:3372
void dirserv_free_all(void)
Definition: dirserv.c:3550
int list_server_status_v1(smartlist_t *routers, char **router_status_out, int for_controller)
Definition: dirserv.c:1015
int dirserv_load_fingerprint_file(void)
Definition: dirserv.c:196
Definition: crypto_rsa.c:41
int dirserv_add_own_fingerprint(crypto_pk_t *pk)
Definition: dirserv.c:177
int dirserv_query_measured_bw_cache_kb(const char *node_id, long *bw_out, time_t *as_of_out)
Definition: dirserv.c:1741
STATIC int measured_bw_line_parse(measured_bw_line_t *out, const char *orig_line)
Definition: dirserv.c:2455
struct consensus_cache_entry_t * consensus_cache_entry
Definition: dirserv.h:81
void dirserv_clear_measured_bw_cache(void)
Definition: dirserv.c:1706
spooled_resource_t * spooled_resource_new_from_cache_entry(struct consensus_cache_entry_t *entry)
Definition: dirserv.c:3014
void dir_conn_clear_spool(dir_connection_t *conn)
Definition: dirserv.c:3462
cached_dir_t * dirserv_get_consensus(const char *flavor_name)
Definition: dirserv.c:1282
enum was_router_added_t dirserv_add_multiple_descriptors(const char *desc, uint8_t purpose, const char *source, const char **msg)
Definition: dirserv.c:572
void dirserv_spool_remove_missing_and_guess_size(dir_connection_t *conn, time_t cutoff, int compression, size_t *size_out, int *n_expired_out)
Definition: dirserv.c:3319
void dirserv_test_reachability(time_t now)
Definition: dirserv.c:2944