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-2011, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
8 * \file networkstatus.h
9 * \brief Header file for networkstatus.c.
12 #ifndef _TOR_NETWORKSTATUS_H
13 #define _TOR_NETWORKSTATUS_H
15 /** How old do we allow a v2 network-status to get before removing it
17 #define MAX_NETWORKSTATUS_AGE (10*24*60*60)
19 void networkstatus_reset_warnings(void);
20 void networkstatus_reset_download_failures(void);
21 int router_reload_v2_networkstatus(void);
22 int router_reload_consensus_networkstatus(void);
23 void routerstatus_free(routerstatus_t
*rs
);
24 void networkstatus_v2_free(networkstatus_v2_t
*ns
);
25 void networkstatus_vote_free(networkstatus_t
*ns
);
26 networkstatus_voter_info_t
*networkstatus_get_voter_by_id(
27 networkstatus_t
*vote
,
28 const char *identity
);
29 int networkstatus_check_consensus_signature(networkstatus_t
*consensus
,
31 int networkstatus_check_document_signature(const networkstatus_t
*consensus
,
32 document_signature_t
*sig
,
33 const authority_cert_t
*cert
);
34 char *networkstatus_get_cache_filename(const char *identity_digest
);
35 int router_set_networkstatus_v2(const char *s
, time_t arrived_at
,
36 v2_networkstatus_source_t source
,
37 smartlist_t
*requested_fingerprints
);
38 void networkstatus_v2_list_clean(time_t now
);
39 int compare_digest_to_routerstatus_entry(const void *_key
,
40 const void **_member
);
41 routerstatus_t
*networkstatus_v2_find_entry(networkstatus_v2_t
*ns
,
43 routerstatus_t
*networkstatus_vote_find_entry(networkstatus_t
*ns
,
45 int networkstatus_vote_find_entry_idx(networkstatus_t
*ns
,
46 const char *digest
, int *found_out
);
47 const smartlist_t
*networkstatus_get_v2_list(void);
48 download_status_t
*router_get_dl_status_by_descriptor_digest(const char *d
);
49 routerstatus_t
*router_get_consensus_status_by_id(const char *digest
);
50 routerstatus_t
*router_get_consensus_status_by_descriptor_digest(
52 routerstatus_t
*router_get_consensus_status_by_nickname(const char *nickname
,
54 const char *networkstatus_get_router_digest_by_nickname(const char *nickname
);
55 int networkstatus_nickname_is_unnamed(const char *nickname
);
56 void networkstatus_consensus_download_failed(int status_code
);
57 void update_consensus_networkstatus_fetch_time(time_t now
);
58 int should_delay_dir_fetches(or_options_t
*options
);
59 void update_networkstatus_downloads(time_t now
);
60 void update_certificate_downloads(time_t now
);
61 int consensus_is_waiting_for_certs(void);
62 networkstatus_v2_t
*networkstatus_v2_get_by_digest(const char *digest
);
63 networkstatus_t
*networkstatus_get_latest_consensus(void);
64 networkstatus_t
*networkstatus_get_live_consensus(time_t now
);
65 networkstatus_t
*networkstatus_get_reasonably_live_consensus(time_t now
);
66 #define NSSET_FROM_CACHE 1
67 #define NSSET_WAS_WAITING_FOR_CERTS 2
68 #define NSSET_DONT_DOWNLOAD_CERTS 4
69 #define NSSET_ACCEPT_OBSOLETE 8
70 #define NSSET_REQUIRE_FLAVOR 16
71 int networkstatus_set_current_consensus(const char *consensus
,
74 void networkstatus_note_certs_arrived(void);
75 void routers_update_all_from_networkstatus(time_t now
, int dir_version
);
76 void routers_update_status_from_consensus_networkstatus(smartlist_t
*routers
,
78 void signed_descs_update_status_from_consensus_networkstatus(
81 char *networkstatus_getinfo_helper_single(routerstatus_t
*rs
);
82 char *networkstatus_getinfo_by_purpose(const char *purpose_string
, time_t now
);
83 void networkstatus_dump_bridge_status_to_file(time_t now
);
84 int32_t networkstatus_get_param(networkstatus_t
*ns
, const char *param_name
,
85 int32_t default_val
, int32_t min_val
,
87 int getinfo_helper_networkstatus(control_connection_t
*conn
,
88 const char *question
, char **answer
,
90 int32_t networkstatus_get_bw_weight(networkstatus_t
*ns
, const char *weight
,
92 const char *networkstatus_get_flavor_name(consensus_flavor_t flav
);
93 int networkstatus_parse_flavor_name(const char *flavname
);
94 void document_signature_free(document_signature_t
*sig
);
95 document_signature_t
*document_signature_dup(const document_signature_t
*sig
);
96 void networkstatus_free_all(void);