tor  master
networkstatus.h
Go to the documentation of this file.
1 /* Copyright (c) 2001 Matej Pfajfar.
2  * Copyright (c) 2001-2004, Roger Dingledine.
3  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4  * Copyright (c) 2007-2017, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
6 
12 #ifndef TOR_NETWORKSTATUS_H
13 #define TOR_NETWORKSTATUS_H
14 
15 #include "testsupport.h"
16 
19 char *networkstatus_read_cached_consensus(const char *flavorname);
22 #define routerstatus_free(rs) \
23  FREE_AND_NULL(routerstatus_t, routerstatus_free_, (rs))
25 #define networkstatus_vote_free(ns) \
26  FREE_AND_NULL(networkstatus_t, networkstatus_vote_free_, (ns))
28 #define ns_detached_signatures_free(s) \
29  FREE_AND_NULL(ns_detached_signatures_t, ns_detached_signatures_free_, (s))
31  networkstatus_t *vote,
32  const char *identity);
34  const networkstatus_voter_info_t *voter,
35  digest_algorithm_t alg);
36 
38  int warn);
41  const authority_cert_t *cert);
42 int compare_digest_to_routerstatus_entry(const void *_key,
43  const void **_member);
45  const void **_member);
47  const char *digest);
49  const char *digest);
51  const char *digest, int *found_out);
52 
54  networkstatus_get_dl_status_by_flavor,
55  (consensus_flavor_t flavor));
57  networkstatus_get_dl_status_by_flavor_bootstrap,
58  (consensus_flavor_t flavor));
60  networkstatus_get_dl_status_by_flavor_running,
61  (consensus_flavor_t flavor));
62 
63 MOCK_DECL(smartlist_t *, router_get_descriptor_digests, (void));
64 MOCK_DECL(download_status_t *,router_get_dl_status_by_descriptor_digest,
65  (const char *d));
66 
67 const routerstatus_t *router_get_consensus_status_by_id(const char *digest);
69  const char *digest);
71  networkstatus_t *consensus,
72  const char *digest);
74  router_get_mutable_consensus_status_by_descriptor_digest,
75  (networkstatus_t *consensus, const char *digest));
76 int we_want_to_fetch_flavor(const or_options_t *options, int flavor);
78 void networkstatus_consensus_download_failed(int status_code,
79  const char *flavname);
81 int should_delay_dir_fetches(const or_options_t *options,const char **msg_out);
82 void update_networkstatus_downloads(time_t now);
83 void update_certificate_downloads(time_t now);
85 int client_would_use_router(const routerstatus_t *rs, time_t now);
86 MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus,(void));
87 MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus_by_flavor,
88  (consensus_flavor_t f));
89 MOCK_DECL(networkstatus_t *, networkstatus_get_live_consensus,(time_t now));
90 int networkstatus_is_live(const networkstatus_t *ns, time_t now);
92  time_t now);
94  time_t now);
96  int flavor);
97 MOCK_DECL(int, networkstatus_consensus_is_bootstrapping,(time_t now));
99  const or_options_t *options);
100 MOCK_DECL(int, networkstatus_consensus_can_use_extra_fallbacks,(
101  const or_options_t *options));
102 int networkstatus_consensus_is_already_downloading(const char *resource);
103 int networkstatus_consensus_has_ipv6(const or_options_t* options);
104 
105 #define NSSET_FROM_CACHE 1
106 #define NSSET_WAS_WAITING_FOR_CERTS 2
107 #define NSSET_DONT_DOWNLOAD_CERTS 4
108 #define NSSET_ACCEPT_OBSOLETE 8
109 #define NSSET_REQUIRE_FLAVOR 16
110 int networkstatus_set_current_consensus(const char *consensus,
111  const char *flavor,
112  unsigned flags,
113  const char *source_dir);
114 void networkstatus_note_certs_arrived(const char *source_dir);
115 void routers_update_all_from_networkstatus(time_t now, int dir_version);
117  int reset_failures);
119  smartlist_t *descs);
120 
122 char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
124 MOCK_DECL(int32_t, networkstatus_get_param,
125  (const networkstatus_t *ns, const char *param_name,
126  int32_t default_val, int32_t min_val, int32_t max_val));
128  int32_t torrc_value,
129  const char *param_name,
130  int32_t default_val,
131  int32_t min_val, int32_t max_val);
133  const char *question, char **answer,
134  const char **errmsg);
135 int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight,
136  int32_t default_val);
138 int networkstatus_parse_flavor_name(const char *flavname);
140 #define document_signature_free(sig) \
141  FREE_AND_NULL(document_signature_t, document_signature_free_, (sig))
143 void networkstatus_free_all(void);
145 
147 #define vote_routerstatus_free(rs) \
148  FREE_AND_NULL(vote_routerstatus_t, vote_routerstatus_free_, (rs))
149 
150 #ifdef NETWORKSTATUS_PRIVATE
151 #ifdef TOR_UNIT_TESTS
152 STATIC int networkstatus_set_current_consensus_from_ns(networkstatus_t *c,
153  const char *flavor);
154 STATIC void warn_early_consensus(const networkstatus_t *c, const char *flavor,
155  time_t now);
158 #endif /* defined(TOR_UNIT_TESTS) */
159 #endif /* defined(NETWORKSTATUS_PRIVATE) */
160 
161 #endif /* !defined(TOR_NETWORKSTATUS_H) */
162 
STATIC networkstatus_t * current_ns_consensus
Definition: networkstatus.c:79
char * networkstatus_getinfo_helper_single(const routerstatus_t *rs)
Definition: networkstatus.c:2276
Definition: or.h:3657
const routerstatus_t * networkstatus_vote_find_entry(networkstatus_t *ns, const char *digest)
Definition: networkstatus.c:680
int networkstatus_get_weight_scale_param(networkstatus_t *ns)
Definition: networkstatus.c:2449
const routerstatus_t * router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus, const char *digest)
Definition: networkstatus.c:724
int networkstatus_consensus_reasonably_live(const networkstatus_t *consensus, time_t now)
Definition: networkstatus.c:1394
int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight, int32_t default_val)
Definition: networkstatus.c:2462
void networkstatus_dump_bridge_status_to_file(time_t now)
Definition: networkstatus.c:2332
void update_consensus_networkstatus_fetch_time(time_t now)
Definition: networkstatus.c:1190
void update_networkstatus_downloads(time_t now)
Definition: networkstatus.c:1258
void routers_update_status_from_consensus_networkstatus(smartlist_t *routers, int reset_failures)
Definition: networkstatus.c:2204
STATIC void warn_early_consensus(const networkstatus_t *c, const char *flavor, time_t now)
Definition: networkstatus.c:1754
Definition: or.h:2636
routerstatus_t * networkstatus_vote_find_mutable_entry(networkstatus_t *ns, const char *digest)
Definition: networkstatus.c:671
int compare_digest_to_vote_routerstatus_entry(const void *_key, const void **_member)
Definition: networkstatus.c:661
const routerstatus_t * router_get_consensus_status_by_id(const char *digest)
Definition: networkstatus.c:798
MOCK_DECL(int, router_have_minimum_dir_info,(void))
document_signature_t * networkstatus_get_voter_sig_by_alg(const networkstatus_voter_info_t *voter, digest_algorithm_t alg)
Definition: networkstatus.c:400
void vote_routerstatus_free_(vote_routerstatus_t *rs)
Definition: networkstatus.c:264
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)
Definition: networkstatus.c:2429
int networkstatus_check_consensus_signature(networkstatus_t *consensus, int warn)
Definition: networkstatus.c:469
Definition: container.h:18
Definition: d.py:1
Definition: or.h:2687
void networkstatus_reset_download_failures(void)
Definition: networkstatus.c:170
document_signature_t * document_signature_dup(const document_signature_t *sig)
Definition: networkstatus.c:300
int client_would_use_router(const routerstatus_t *rs, time_t now)
Definition: networkstatus.c:2518
void routerstatus_free_(routerstatus_t *rs)
Definition: networkstatus.c:282
int getinfo_helper_networkstatus(control_connection_t *conn, const char *question, char **answer, const char **errmsg)
Definition: networkstatus.c:2543
STATIC networkstatus_t * current_md_consensus
Definition: networkstatus.c:83
Definition: or.h:2618
int compare_digest_to_routerstatus_entry(const void *_key, const void **_member)
Definition: networkstatus.c:651
int consensus_is_waiting_for_certs(void)
Definition: networkstatus.c:1290
void networkstatus_vote_free_(networkstatus_t *ns)
Definition: networkstatus.c:310
void signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs)
Definition: networkstatus.c:2249
void routers_update_all_from_networkstatus(time_t now, int dir_version)
Definition: networkstatus.c:2140
int networkstatus_vote_find_entry_idx(networkstatus_t *ns, const char *digest, int *found_out)
Definition: networkstatus.c:690
void ns_detached_signatures_free_(ns_detached_signatures_t *s)
Definition: networkstatus.c:2671
routerstatus_t * router_get_mutable_consensus_status_by_id(const char *digest)
Definition: networkstatus.c:785
void networkstatus_free_all(void)
Definition: networkstatus.c:2690
int networkstatus_consensus_can_use_multiple_directories(const or_options_t *options)
Definition: networkstatus.c:1466
Definition: or.h:1885
int networkstatus_check_document_signature(const networkstatus_t *consensus, document_signature_t *sig, const authority_cert_t *cert)
Definition: networkstatus.c:416
Definition: or.h:2107
void document_signature_free_(document_signature_t *sig)
Definition: networkstatus.c:292
void networkstatus_consensus_download_failed(int status_code, const char *flavname)
Definition: networkstatus.c:1077
int networkstatus_is_live(const networkstatus_t *ns, time_t now)
Definition: networkstatus.c:1383
const char * networkstatus_get_flavor_name(consensus_flavor_t flav)
Definition: networkstatus.c:2488
int networkstatus_set_current_consensus(const char *consensus, const char *flavor, unsigned flags, const char *source_dir)
Definition: networkstatus.c:1809
int should_delay_dir_fetches(const or_options_t *options, const char **msg_out)
Definition: networkstatus.c:1208
char * networkstatus_read_cached_consensus(const char *flavorname)
Definition: networkstatus.c:215
consensus_flavor_t
Definition: or.h:2677
void networkstatus_reset_warnings(void)
Definition: networkstatus.c:157
networkstatus_voter_info_t * networkstatus_get_voter_by_id(networkstatus_t *vote, const char *identity)
Definition: networkstatus.c:386
int we_want_to_fetch_unknown_auth_certs(const or_options_t *options)
Definition: networkstatus.c:845
void update_certificate_downloads(time_t now)
Definition: networkstatus.c:1272
Definition: or.h:2769
networkstatus_t * networkstatus_get_reasonably_live_consensus(time_t now, int flavor)
Definition: networkstatus.c:1420
int networkstatus_valid_until_is_reasonably_live(time_t valid_until, time_t now)
Definition: networkstatus.c:1407
Definition: or.h:2344
void networkstatus_note_certs_arrived(const char *source_dir)
Definition: networkstatus.c:2113
Definition: or.h:2853
char * networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now)
Definition: networkstatus.c:2291
Definition: or.h:2590
int we_want_to_fetch_flavor(const or_options_t *options, int flavor)
Definition: networkstatus.c:817
int networkstatus_parse_flavor_name(const char *flavname)
Definition: networkstatus.c:2504
int router_reload_consensus_networkstatus(void)
Definition: networkstatus.c:225