From c53b6cc8315fac37a05112553476930a21990d97 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Wed, 21 Jul 2010 16:17:10 +0200 Subject: Create router.h --- src/or/rephist.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/or/rephist.c') diff --git a/src/or/rephist.c b/src/or/rephist.c index 0e55db2d6..00a2cabe2 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "router.h" #include "ht.h" static void bw_arrays_init(void); -- cgit v1.2.3 From cbee969f407b53d2b453d03460eb2864d0eaf1db Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Wed, 21 Jul 2010 17:08:11 +0200 Subject: Create routerlist.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/command.c | 1 + src/or/config.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/control.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/geoip.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 175 ------------------------------------------ src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerlist.h | 193 +++++++++++++++++++++++++++++++++++++++++++++++ src/or/routerparse.c | 1 + src/test/test_dir.c | 1 + 25 files changed, 216 insertions(+), 175 deletions(-) create mode 100644 src/or/routerlist.h (limited to 'src/or/rephist.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 0a25c034e..08aa2524f 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -13,6 +13,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" #include "crypto.h" #undef log #include <math.h> diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index e18e89266..cc33fcb35 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "routerlist.h" #include "ht.h" /********* START VARIABLES **********/ diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 7a7cc4d30..753ae7b78 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -11,6 +11,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" /********* START VARIABLES **********/ diff --git a/src/or/command.c b/src/or/command.c index e367dd739..8ba45a398 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -17,6 +17,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" /** How many CELL_PADDING cells have we received, ever? */ uint64_t stats_n_padding_cells_processed = 0; diff --git a/src/or/config.c b/src/or/config.c index 48fa11eca..8cd719a75 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -14,6 +14,7 @@ #include "or.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" #ifdef MS_WINDOWS #include <shlobj.h> #endif diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 35d01ea56..8c63d516e 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -12,6 +12,7 @@ #include "or.h" #include "dnsserv.h" #include "router.h" +#include "routerlist.h" #ifdef HAVE_LINUX_TYPES_H #include <linux/types.h> diff --git a/src/or/connection_or.c b/src/or/connection_or.c index e4fe58a2f..b1ed17449 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -13,6 +13,7 @@ #include "or.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" static int connection_tls_finish_handshake(or_connection_t *conn); static int connection_or_process_cells_from_inbuf(or_connection_t *conn); diff --git a/src/or/control.c b/src/or/control.c index 59d0a681d..b99451327 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -14,6 +14,7 @@ #include "dnsserv.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" /** Yield true iff <b>s</b> is the state of a control_connection_t that has * finished authentication and is accepting commands. */ diff --git a/src/or/directory.c b/src/or/directory.c index 993044416..1e311697d 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -6,6 +6,7 @@ #include "or.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" #if defined(EXPORTMALLINFO) && defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) #ifndef OPENBSD diff --git a/src/or/dirserv.c b/src/or/dirserv.c index dbff93205..59a8fdc88 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -6,6 +6,7 @@ #define DIRSERV_PRIVATE #include "or.h" #include "router.h" +#include "routerlist.h" /** * \file dirserv.c diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 637ad54e0..782e04c1b 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -6,6 +6,7 @@ #define DIRVOTE_PRIVATE #include "or.h" #include "router.h" +#include "routerlist.h" /** * \file dirvote.c diff --git a/src/or/geoip.c b/src/or/geoip.c index f027f3299..5275c6ec7 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -12,6 +12,7 @@ #include "ht.h" #include "dnsserv.h" #include "geoip.h" +#include "routerlist.h" static void clear_geoip_db(void); diff --git a/src/or/main.c b/src/or/main.c index d21de19f0..271d6fe77 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -15,6 +15,7 @@ #include "dnsserv.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" #ifdef USE_DMALLOC #include <dmalloc.h> #include <openssl/crypto.h> diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 724730cbd..92a41b964 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -12,6 +12,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" /* For tracking v2 networkstatus documents. Only caches do this now. */ diff --git a/src/or/or.h b/src/or/or.h index 5eac3290b..e9fd5b1b9 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4808,21 +4808,6 @@ typedef struct trusted_dir_server_t { #define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX -int get_n_authorities(authority_type_t type); -int trusted_dirs_reload_certs(void); -int trusted_dirs_load_certs_from_string(const char *contents, int from_store, - int flush); -void trusted_dirs_flush_certs_to_disk(void); -authority_cert_t *authority_cert_get_newest_by_id(const char *id_digest); -authority_cert_t *authority_cert_get_by_sk_digest(const char *sk_digest); -authority_cert_t *authority_cert_get_by_digests(const char *id_digest, - const char *sk_digest); -void authority_cert_get_all(smartlist_t *certs_out); -void authority_cert_dl_failed(const char *id_digest, int status); -void authority_certs_fetch_missing(networkstatus_t *status, time_t now); -int router_reload_router_list(void); -smartlist_t *router_get_trusted_dir_servers(void); - /* Flags for pick_directory_server and pick_trusteddirserver. */ /** Flag to indicate that we should not automatically be willing to use * ourself to answer a directory request. @@ -4852,25 +4837,6 @@ smartlist_t *router_get_trusted_dir_servers(void); */ #define PDS_NO_EXISTING_SERVERDESC_FETCH (1<<3) #define _PDS_PREFER_TUNNELED_DIR_CONNS (1<<16) -routerstatus_t *router_pick_directory_server(authority_type_t type, int flags); -trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d); -trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d); -routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags); -int router_get_my_share_of_directory_requests(double *v2_share_out, - double *v3_share_out); -void router_reset_status_download_failures(void); -void routerlist_add_family(smartlist_t *sl, routerinfo_t *router); -int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2); -void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list, - int must_be_running); -int router_nickname_is_in_list(routerinfo_t *router, const char *list); -routerinfo_t *routerlist_find_my_routerinfo(void); -routerinfo_t *router_find_exact_exit_enclave(const char *address, - uint16_t port); -int router_is_unreliable(routerinfo_t *router, int need_uptime, - int need_capacity, int need_guard); -uint32_t router_get_advertised_bandwidth(routerinfo_t *router); -uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router); /** Possible ways to weight routers when choosing one randomly. See * routerlist_sl_choose_by_bandwidth() for more information.*/ @@ -4878,10 +4844,6 @@ typedef enum bandwidth_weight_rule_t { NO_WEIGHTING, WEIGHT_FOR_EXIT, WEIGHT_FOR_MID, WEIGHT_FOR_GUARD, WEIGHT_FOR_DIR } bandwidth_weight_rule_t; -routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule); -routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule); /* XXXX actually declared in reasons.c */ const char *bandwidth_weight_rule_to_string(enum bandwidth_weight_rule_t rule); @@ -4897,38 +4859,6 @@ typedef enum { CRN_WEIGHT_AS_EXIT = 1<<5 } router_crn_flags_t; -routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist, - struct routerset_t *excludedset, - router_crn_flags_t flags); - -routerinfo_t *router_get_by_nickname(const char *nickname, - int warn_if_unnamed); -int router_digest_version_as_new_as(const char *digest, const char *cutoff); -int router_digest_is_trusted_dir_type(const char *digest, - authority_type_t type); -#define router_digest_is_trusted_dir(d) \ - router_digest_is_trusted_dir_type((d), NO_AUTHORITY) - -int router_addr_is_trusted_dir(uint32_t addr); -int hexdigest_to_digest(const char *hexdigest, char *digest); -routerinfo_t *router_get_by_hexdigest(const char *hexdigest); -routerinfo_t *router_get_by_digest(const char *digest); -signed_descriptor_t *router_get_by_descriptor_digest(const char *digest); -signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest); -signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest); -const char *signed_descriptor_get_body(signed_descriptor_t *desc); -const char *signed_descriptor_get_annotations(signed_descriptor_t *desc); -routerlist_t *router_get_routerlist(void); -void routerinfo_free(routerinfo_t *router); -void extrainfo_free(extrainfo_t *extrainfo); -void routerlist_free(routerlist_t *rl); -void dump_routerlist_mem_usage(int severity); -void routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old, - time_t now); -void routerlist_free_all(void); -void routerlist_reset_warnings(void); -void router_set_status(const char *digest, int up); - /** Return value for router_add_to_routerlist() and dirserv_add_descriptor() */ typedef enum was_router_added_t { ROUTER_ADDED_SUCCESSFULLY = 1, @@ -4940,111 +4870,6 @@ typedef enum was_router_added_t { ROUTER_AUTHDIR_REJECTS = -5, } was_router_added_t; -static int WRA_WAS_ADDED(was_router_added_t s); -static int WRA_WAS_OUTDATED(was_router_added_t s); -static int WRA_WAS_REJECTED(was_router_added_t s); -/** Return true iff the descriptor was added. It might still be necessary to - * check whether the descriptor generator should be notified. - */ -static INLINE int -WRA_WAS_ADDED(was_router_added_t s) { - return s == ROUTER_ADDED_SUCCESSFULLY || s == ROUTER_ADDED_NOTIFY_GENERATOR; -} -/** Return true iff the descriptor was not added because it was either: - * - not in the consensus - * - neither in the consensus nor in any networkstatus document - * - it was outdated. - */ -static INLINE int WRA_WAS_OUTDATED(was_router_added_t s) -{ - return (s == ROUTER_WAS_NOT_NEW || - s == ROUTER_NOT_IN_CONSENSUS || - s == ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS); -} -/** Return true iff the descriptor rejected because it was malformed. */ -static INLINE int WRA_WAS_REJECTED(was_router_added_t s) -{ - return (s == ROUTER_AUTHDIR_REJECTS); -} -was_router_added_t router_add_to_routerlist(routerinfo_t *router, - const char **msg, - int from_cache, - int from_fetch); -was_router_added_t router_add_extrainfo_to_routerlist( - extrainfo_t *ei, const char **msg, - int from_cache, int from_fetch); -void routerlist_remove_old_routers(void); -int router_load_single_router(const char *s, uint8_t purpose, int cache, - const char **msg); -int router_load_routers_from_string(const char *s, const char *eos, - saved_location_t saved_location, - smartlist_t *requested_fingerprints, - int descriptor_digests, - const char *prepend_annotations); -void router_load_extrainfo_from_string(const char *s, const char *eos, - saved_location_t saved_location, - smartlist_t *requested_fingerprints, - int descriptor_digests); -void routerlist_retry_directory_downloads(time_t now); -int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port, - int need_uptime); -int router_exit_policy_rejects_all(routerinfo_t *router); -trusted_dir_server_t *add_trusted_dir_server(const char *nickname, - const char *address, - uint16_t dir_port, uint16_t or_port, - const char *digest, const char *v3_auth_digest, - authority_type_t type); -void authority_cert_free(authority_cert_t *cert); -void clear_trusted_dir_servers(void); -int any_trusted_dir_is_v1_authority(void); -void update_consensus_router_descriptor_downloads(time_t now, int is_vote, - networkstatus_t *consensus); -void update_router_descriptor_downloads(time_t now); -void update_extrainfo_downloads(time_t now); -int router_have_minimum_dir_info(void); -void router_dir_info_changed(void); -const char *get_dir_info_status_string(void); -int count_loading_descriptors_progress(void); -void router_reset_descriptor_download_failures(void); -int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2); -int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, - signed_descriptor_t *sd, - const char **msg); -void routerlist_assert_ok(routerlist_t *rl); -const char *esc_router_info(routerinfo_t *router); -void routers_sort_by_identity(smartlist_t *routers); - -routerset_t *routerset_new(void); -int routerset_parse(routerset_t *target, const char *s, - const char *description); -void routerset_union(routerset_t *target, const routerset_t *source); -int routerset_is_list(const routerset_t *set); -int routerset_needs_geoip(const routerset_t *set); -int routerset_contains_router(const routerset_t *set, routerinfo_t *ri); -int routerset_contains_routerstatus(const routerset_t *set, - routerstatus_t *rs); -int routerset_contains_extendinfo(const routerset_t *set, - const extend_info_t *ei); -void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset, - int running_only); -void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source, - const routerset_t *include, - const routerset_t *exclude, int running_only); -void routerset_subtract_routers(smartlist_t *out, - const routerset_t *routerset); -char *routerset_to_string(const routerset_t *routerset); -void routerset_refresh_countries(routerset_t *target); -int routerset_equal(const routerset_t *old, const routerset_t *new); -void routerset_free(routerset_t *routerset); -void routerinfo_set_country(routerinfo_t *ri); -void routerlist_refresh_countries(void); -void refresh_all_country_info(void); - -int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, - const char *id); -int hid_serv_acting_as_directory(void); -int hid_serv_responsible_for_desc_id(const char *id); - /********************************* routerparse.c ************************/ #define MAX_STATUS_TAG_LEN 32 diff --git a/src/or/relay.c b/src/or/relay.c index 1c15549d0..d227bdfed 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -14,6 +14,7 @@ #include "or.h" #include "geoip.h" #include "mempool.h" +#include "routerlist.h" static int relay_crypt(circuit_t *circ, cell_t *cell, cell_direction_t cell_direction, diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 9a31c2d73..0a9f483e5 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "routerlist.h" /** Called when we've established a circuit to an introduction point: * send the introduction request. */ diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index 814abd8cc..4af041525 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "routerlist.h" /** Return 0 if one and two are the same service ids, else -1 or 1 */ int diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 30df64e05..c7dc3c901 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -9,6 +9,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest); diff --git a/src/or/rephist.c b/src/or/rephist.c index 00a2cabe2..25fda237a 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -11,6 +11,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" #include "ht.h" static void bw_arrays_init(void); diff --git a/src/or/router.c b/src/or/router.c index 20316815b..53a4a7db4 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -9,6 +9,7 @@ #include "or.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" /** * \file router.c diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 7d9e48c1d..b4803e9ac 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -14,6 +14,7 @@ #include "or.h" #include "geoip.h" #include "router.h" +#include "routerlist.h" // #define DEBUG_ROUTERLIST diff --git a/src/or/routerlist.h b/src/or/routerlist.h new file mode 100644 index 000000000..bbb3c5fe0 --- /dev/null +++ b/src/or/routerlist.h @@ -0,0 +1,193 @@ +/* Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file routerlist.h + * \brief Header file for routerlist functions + **/ + +#ifndef _TOR_ROUTERLIST_H +#define _TOR_ROUTERLIST_H + +int get_n_authorities(authority_type_t type); +int trusted_dirs_reload_certs(void); +int trusted_dirs_load_certs_from_string(const char *contents, int from_store, + int flush); +void trusted_dirs_flush_certs_to_disk(void); +authority_cert_t *authority_cert_get_newest_by_id(const char *id_digest); +authority_cert_t *authority_cert_get_by_sk_digest(const char *sk_digest); +authority_cert_t *authority_cert_get_by_digests(const char *id_digest, + const char *sk_digest); +void authority_cert_get_all(smartlist_t *certs_out); +void authority_cert_dl_failed(const char *id_digest, int status); +void authority_certs_fetch_missing(networkstatus_t *status, time_t now); +int router_reload_router_list(void); +smartlist_t *router_get_trusted_dir_servers(void); + +routerstatus_t *router_pick_directory_server(authority_type_t type, int flags); +trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d); +trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d); +routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags); +int router_get_my_share_of_directory_requests(double *v2_share_out, + double *v3_share_out); +void router_reset_status_download_failures(void); +void routerlist_add_family(smartlist_t *sl, routerinfo_t *router); +int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2); +void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list, + int must_be_running); +int router_nickname_is_in_list(routerinfo_t *router, const char *list); +routerinfo_t *routerlist_find_my_routerinfo(void); +routerinfo_t *router_find_exact_exit_enclave(const char *address, + uint16_t port); +int router_is_unreliable(routerinfo_t *router, int need_uptime, + int need_capacity, int need_guard); +uint32_t router_get_advertised_bandwidth(routerinfo_t *router); +uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router); + +routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl, + bandwidth_weight_rule_t rule); +routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl, + bandwidth_weight_rule_t rule); + +routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist, + struct routerset_t *excludedset, + router_crn_flags_t flags); + +routerinfo_t *router_get_by_nickname(const char *nickname, + int warn_if_unnamed); +int router_digest_version_as_new_as(const char *digest, const char *cutoff); +int router_digest_is_trusted_dir_type(const char *digest, + authority_type_t type); +#define router_digest_is_trusted_dir(d) \ + router_digest_is_trusted_dir_type((d), NO_AUTHORITY) + +int router_addr_is_trusted_dir(uint32_t addr); +int hexdigest_to_digest(const char *hexdigest, char *digest); +routerinfo_t *router_get_by_hexdigest(const char *hexdigest); +routerinfo_t *router_get_by_digest(const char *digest); +signed_descriptor_t *router_get_by_descriptor_digest(const char *digest); +signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest); +signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest); +const char *signed_descriptor_get_body(signed_descriptor_t *desc); +const char *signed_descriptor_get_annotations(signed_descriptor_t *desc); +routerlist_t *router_get_routerlist(void); +void routerinfo_free(routerinfo_t *router); +void extrainfo_free(extrainfo_t *extrainfo); +void routerlist_free(routerlist_t *rl); +void dump_routerlist_mem_usage(int severity); +void routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old, + time_t now); +void routerlist_free_all(void); +void routerlist_reset_warnings(void); +void router_set_status(const char *digest, int up); + +static int WRA_WAS_ADDED(was_router_added_t s); +static int WRA_WAS_OUTDATED(was_router_added_t s); +static int WRA_WAS_REJECTED(was_router_added_t s); +/** Return true iff the descriptor was added. It might still be necessary to + * check whether the descriptor generator should be notified. + */ +static INLINE int +WRA_WAS_ADDED(was_router_added_t s) { + return s == ROUTER_ADDED_SUCCESSFULLY || s == ROUTER_ADDED_NOTIFY_GENERATOR; +} +/** Return true iff the descriptor was not added because it was either: + * - not in the consensus + * - neither in the consensus nor in any networkstatus document + * - it was outdated. + */ +static INLINE int WRA_WAS_OUTDATED(was_router_added_t s) +{ + return (s == ROUTER_WAS_NOT_NEW || + s == ROUTER_NOT_IN_CONSENSUS || + s == ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS); +} +static INLINE int WRA_WAS_REJECTED(was_router_added_t s) +{ + return (s == ROUTER_AUTHDIR_REJECTS); +} +was_router_added_t router_add_to_routerlist(routerinfo_t *router, + const char **msg, + int from_cache, + int from_fetch); +was_router_added_t router_add_extrainfo_to_routerlist( + extrainfo_t *ei, const char **msg, + int from_cache, int from_fetch); +void routerlist_remove_old_routers(void); +int router_load_single_router(const char *s, uint8_t purpose, int cache, + const char **msg); +int router_load_routers_from_string(const char *s, const char *eos, + saved_location_t saved_location, + smartlist_t *requested_fingerprints, + int descriptor_digests, + const char *prepend_annotations); +void router_load_extrainfo_from_string(const char *s, const char *eos, + saved_location_t saved_location, + smartlist_t *requested_fingerprints, + int descriptor_digests); + +void routerlist_retry_directory_downloads(time_t now); +int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port, + int need_uptime); +int router_exit_policy_rejects_all(routerinfo_t *router); +trusted_dir_server_t *add_trusted_dir_server(const char *nickname, + const char *address, + uint16_t dir_port, uint16_t or_port, + const char *digest, const char *v3_auth_digest, + authority_type_t type); +void authority_cert_free(authority_cert_t *cert); +void clear_trusted_dir_servers(void); +int any_trusted_dir_is_v1_authority(void); +void update_consensus_router_descriptor_downloads(time_t now, int is_vote, + networkstatus_t *consensus); +void update_router_descriptor_downloads(time_t now); +void update_extrainfo_downloads(time_t now); +int router_have_minimum_dir_info(void); +void router_dir_info_changed(void); +const char *get_dir_info_status_string(void); +int count_loading_descriptors_progress(void); +void router_reset_descriptor_download_failures(void); +int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2); +int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, + signed_descriptor_t *sd, + const char **msg); + +void routerlist_assert_ok(routerlist_t *rl); +const char *esc_router_info(routerinfo_t *router); +void routers_sort_by_identity(smartlist_t *routers); + +routerset_t *routerset_new(void); +int routerset_parse(routerset_t *target, const char *s, + const char *description); +void routerset_union(routerset_t *target, const routerset_t *source); +int routerset_is_list(const routerset_t *set); +int routerset_needs_geoip(const routerset_t *set); +int routerset_contains_router(const routerset_t *set, routerinfo_t *ri); +int routerset_contains_routerstatus(const routerset_t *set, + routerstatus_t *rs); +int routerset_contains_extendinfo(const routerset_t *set, + const extend_info_t *ei); +void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset, + int running_only); +void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source, + const routerset_t *include, + const routerset_t *exclude, int running_only); +void routerset_subtract_routers(smartlist_t *out, + const routerset_t *routerset); +char *routerset_to_string(const routerset_t *routerset); +void routerset_refresh_countries(routerset_t *target); +int routerset_equal(const routerset_t *old, const routerset_t *new); +void routerset_free(routerset_t *routerset); +void routerinfo_set_country(routerinfo_t *ri); +void routerlist_refresh_countries(void); +void refresh_all_country_info(void); + +int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, + const char *id); +int hid_serv_acting_as_directory(void); +int hid_serv_responsible_for_desc_id(const char *id); + +#endif + diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 3da1915cc..760f876c3 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -11,6 +11,7 @@ #include "or.h" #include "router.h" +#include "routerlist.h" #include "memarea.h" #undef log #include <math.h> diff --git a/src/test/test_dir.c b/src/test/test_dir.c index f99352a9b..5ea09d092 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -9,6 +9,7 @@ #define ROUTER_PRIVATE #include "or.h" #include "router.h" +#include "routerlist.h" #include "test.h" static void -- cgit v1.2.3 From 174a88dd79ecf3b6c76d63d44bef3e47378777ee Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Thu, 22 Jul 2010 09:46:23 +0200 Subject: Create circuitlist.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuitlist.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/circuituse.c | 1 + src/or/command.c | 1 + src/or/config.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/control.c | 1 + src/or/cpuworker.c | 1 + src/or/dns.c | 1 + src/or/main.c | 1 + src/or/onion.c | 1 + src/or/or.h | 46 ------------------------------------- src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/rendmid.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + 20 files changed, 78 insertions(+), 46 deletions(-) create mode 100644 src/or/circuitlist.h (limited to 'src/or/rephist.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index a2f7c2c52..ee18dc3b3 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 52b33197a..4e58ddef9 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h new file mode 100644 index 000000000..caca614c8 --- /dev/null +++ b/src/or/circuitlist.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file circuitlist.h + * \brief Header file for circuitlist.c. + **/ + +#ifndef _TOR_CIRCUITLIST_H +#define _TOR_CIRCUITLIST_H + +circuit_t * _circuit_get_global_list(void); +const char *circuit_state_to_string(int state); +const char *circuit_purpose_to_controller_string(uint8_t purpose); +void circuit_dump_by_conn(connection_t *conn, int severity); +void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id, + or_connection_t *conn); +void circuit_set_n_circid_orconn(circuit_t *circ, circid_t id, + or_connection_t *conn); +void circuit_set_state(circuit_t *circ, uint8_t state); +void circuit_close_all_marked(void); +int32_t circuit_initial_package_window(void); +origin_circuit_t *origin_circuit_new(void); +or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn); +circuit_t *circuit_get_by_circid_orconn(circid_t circ_id, + or_connection_t *conn); +int circuit_id_in_use_on_orconn(circid_t circ_id, or_connection_t *conn); +circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); +void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); +origin_circuit_t *circuit_get_by_global_id(uint32_t id); +origin_circuit_t *circuit_get_by_rend_query_and_purpose(const char *rend_query, + uint8_t purpose); +origin_circuit_t *circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, + const char *digest, uint8_t purpose); +or_circuit_t *circuit_get_rendezvous(const char *cookie); +or_circuit_t *circuit_get_intro_point(const char *digest); +origin_circuit_t *circuit_find_to_cannibalize(uint8_t purpose, + extend_info_t *info, int flags); +void circuit_mark_all_unused_circs(void); +void circuit_expire_all_dirty_circs(void); +void _circuit_mark_for_close(circuit_t *circ, int reason, + int line, const char *file); +int circuit_get_cpath_len(origin_circuit_t *circ); +crypt_path_t *circuit_get_cpath_hop(origin_circuit_t *circ, int hopnum); +void circuit_get_all_pending_on_or_conn(smartlist_t *out, + or_connection_t *or_conn); +int circuit_count_pending_on_or_conn(or_connection_t *or_conn); + +#define circuit_mark_for_close(c, reason) \ + _circuit_mark_for_close((c), (reason), __LINE__, _SHORT_FILE_) + +void assert_cpath_layer_ok(const crypt_path_t *cp); +void assert_circuit_ok(const circuit_t *c); +void circuit_free_all(void); + +#endif + diff --git a/src/or/circuituse.c b/src/or/circuituse.c index e4e5d205b..9e1c1860a 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 1ca82f7d2..1f084d032 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -17,6 +17,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 9996d1cc5..e9c9cbd69 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index c910c7c5d..1ed3e3d09 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -13,6 +13,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 84752f15b..15cd8bf9b 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -11,6 +11,7 @@ #include "or.h" #include "buffers.h" +#include "circuitlist.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/control.c b/src/or/control.c index ff6d4ce2a..5e9e9a2eb 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -13,6 +13,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 5231f1146..b9c51d4fc 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -15,6 +15,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" /** The maximum number of cpuworker processes we will keep around. */ diff --git a/src/or/dns.c b/src/or/dns.c index 8fd5cfa54..a40617cc6 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -12,6 +12,7 @@ **/ #include "or.h" +#include "circuitlist.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/main.c b/src/or/main.c index a907ddf8f..97af4f5ae 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/onion.c b/src/or/onion.c index 887087424..2d666475f 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "circuitlist.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ diff --git a/src/or/or.h b/src/or/or.h index 7afd7115e..0b09036c1 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3055,52 +3055,6 @@ typedef struct { double close_ms; } circuit_build_times_t; -/********************************* circuitlist.c ***********************/ - -circuit_t * _circuit_get_global_list(void); -const char *circuit_state_to_string(int state); -const char *circuit_purpose_to_controller_string(uint8_t purpose); -void circuit_dump_by_conn(connection_t *conn, int severity); -void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id, - or_connection_t *conn); -void circuit_set_n_circid_orconn(circuit_t *circ, circid_t id, - or_connection_t *conn); -void circuit_set_state(circuit_t *circ, uint8_t state); -void circuit_close_all_marked(void); -int32_t circuit_initial_package_window(void); -origin_circuit_t *origin_circuit_new(void); -or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn); -circuit_t *circuit_get_by_circid_orconn(circid_t circ_id, - or_connection_t *conn); -int circuit_id_in_use_on_orconn(circid_t circ_id, or_connection_t *conn); -circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); -void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); -origin_circuit_t *circuit_get_by_global_id(uint32_t id); -origin_circuit_t *circuit_get_by_rend_query_and_purpose(const char *rend_query, - uint8_t purpose); -origin_circuit_t *circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, - const char *digest, uint8_t purpose); -or_circuit_t *circuit_get_rendezvous(const char *cookie); -or_circuit_t *circuit_get_intro_point(const char *digest); -origin_circuit_t *circuit_find_to_cannibalize(uint8_t purpose, - extend_info_t *info, int flags); -void circuit_mark_all_unused_circs(void); -void circuit_expire_all_dirty_circs(void); -void _circuit_mark_for_close(circuit_t *circ, int reason, - int line, const char *file); -int circuit_get_cpath_len(origin_circuit_t *circ); -crypt_path_t *circuit_get_cpath_hop(origin_circuit_t *circ, int hopnum); -void circuit_get_all_pending_on_or_conn(smartlist_t *out, - or_connection_t *or_conn); -int circuit_count_pending_on_or_conn(or_connection_t *or_conn); - -#define circuit_mark_for_close(c, reason) \ - _circuit_mark_for_close((c), (reason), __LINE__, _SHORT_FILE_) - -void assert_cpath_layer_ok(const crypt_path_t *cp); -void assert_circuit_ok(const circuit_t *c); -void circuit_free_all(void); - /********************************* circuituse.c ************************/ void circuit_expire_building(time_t now); diff --git a/src/or/relay.c b/src/or/relay.c index eab084d8c..87f453dac 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 076d353f3..472662e37 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendmid.c b/src/or/rendmid.c index c9f4bf8b7..a248828a0 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "circuitlist.h" /** Respond to an ESTABLISH_INTRO cell by checking the signed data and * setting the circuit's purpose and service pk digest. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 0aa0aac32..a1aa6340f 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rephist.c b/src/or/rephist.c index 25fda237a..4ece95e49 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/router.c b/src/or/router.c index 53a4a7db4..12cfc2d9f 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -7,6 +7,7 @@ #define ROUTER_PRIVATE #include "or.h" +#include "circuitlist.h" #include "geoip.h" #include "router.h" #include "routerlist.h" -- cgit v1.2.3 From 01c7b60a8063580fff7ad48adac3d1905df01013 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Thu, 22 Jul 2010 10:03:40 +0200 Subject: Create circuituse.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/circuituse.h | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/control.c | 1 + src/or/dns.c | 1 + src/or/main.c | 1 + src/or/or.h | 39 ----------------------------------- src/or/rendclient.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + 14 files changed, 65 insertions(+), 39 deletions(-) create mode 100644 src/or/circuituse.h (limited to 'src/or/rephist.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index ee18dc3b3..9d54dbec5 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -14,6 +14,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 4e58ddef9..dbbe7bf36 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 9e1c1860a..6ae929e84 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/circuituse.h b/src/or/circuituse.h new file mode 100644 index 000000000..269b6c5f8 --- /dev/null +++ b/src/or/circuituse.h @@ -0,0 +1,53 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file circuituse.h + * \brief Header file for circuituse.c. + **/ + +#ifndef _TOR_CIRCUITUSE_H +#define _TOR_CIRCUITUSE_H + +void circuit_expire_building(time_t now); +void circuit_remove_handled_ports(smartlist_t *needed_ports); +int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, + int min); +int circuit_conforms_to_options(const origin_circuit_t *circ, + const or_options_t *options); +void circuit_build_needed_circs(time_t now); +void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn); + +void circuit_expire_old_circuits_serverside(time_t now); + +void reset_bandwidth_test(void); +int circuit_enough_testing_circs(void); + +void circuit_has_opened(origin_circuit_t *circ); +void circuit_build_failed(origin_circuit_t *circ); + +/** Flag to set when a circuit should have only a single hop. */ +#define CIRCLAUNCH_ONEHOP_TUNNEL (1<<0) +/** Flag to set when a circuit needs to be built of high-uptime nodes */ +#define CIRCLAUNCH_NEED_UPTIME (1<<1) +/** Flag to set when a circuit needs to be built of high-capacity nodes */ +#define CIRCLAUNCH_NEED_CAPACITY (1<<2) +/** Flag to set when the last hop of a circuit doesn't need to be an + * exit node. */ +#define CIRCLAUNCH_IS_INTERNAL (1<<3) +origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose, + extend_info_t *info, + int flags); +origin_circuit_t *circuit_launch_by_router(uint8_t purpose, + routerinfo_t *exit, int flags); +void circuit_reset_failure_count(int timeout); +int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, + origin_circuit_t *circ, + crypt_path_t *cpath); +int connection_ap_handshake_attach_circuit(edge_connection_t *conn); + +#endif + diff --git a/src/or/connection.c b/src/or/connection.c index 1ed3e3d09..255dcccdf 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -14,6 +14,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 15cd8bf9b..311c48161 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -12,6 +12,7 @@ #include "or.h" #include "buffers.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/control.c b/src/or/control.c index 5e9e9a2eb..9c2f4f55d 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -14,6 +14,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/dns.c b/src/or/dns.c index a40617cc6..131304711 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/main.c b/src/or/main.c index 97af4f5ae..d188a5020 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -15,6 +15,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index 0b09036c1..2acc91847 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3055,45 +3055,6 @@ typedef struct { double close_ms; } circuit_build_times_t; -/********************************* circuituse.c ************************/ - -void circuit_expire_building(time_t now); -void circuit_remove_handled_ports(smartlist_t *needed_ports); -int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, - int min); -int circuit_conforms_to_options(const origin_circuit_t *circ, - const or_options_t *options); -void circuit_build_needed_circs(time_t now); -void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn); - -void circuit_expire_old_circuits_serverside(time_t now); - -void reset_bandwidth_test(void); -int circuit_enough_testing_circs(void); - -void circuit_has_opened(origin_circuit_t *circ); -void circuit_build_failed(origin_circuit_t *circ); - -/** Flag to set when a circuit should have only a single hop. */ -#define CIRCLAUNCH_ONEHOP_TUNNEL (1<<0) -/** Flag to set when a circuit needs to be built of high-uptime nodes */ -#define CIRCLAUNCH_NEED_UPTIME (1<<1) -/** Flag to set when a circuit needs to be built of high-capacity nodes */ -#define CIRCLAUNCH_NEED_CAPACITY (1<<2) -/** Flag to set when the last hop of a circuit doesn't need to be an - * exit node. */ -#define CIRCLAUNCH_IS_INTERNAL (1<<3) -origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose, - extend_info_t *info, - int flags); -origin_circuit_t *circuit_launch_by_router(uint8_t purpose, - routerinfo_t *exit, int flags); -void circuit_reset_failure_count(int timeout); -int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, - origin_circuit_t *circ, - crypt_path_t *cpath); -int connection_ap_handshake_attach_circuit(edge_connection_t *conn); - /********************************* command.c ***************************/ void command_process_cell(cell_t *cell, or_connection_t *conn); diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 472662e37..c8e6c0a4f 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index a1aa6340f..fea0b06a1 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rephist.c b/src/or/rephist.c index 4ece95e49..4fa421e51 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/router.c b/src/or/router.c index 12cfc2d9f..a1af88f57 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -8,6 +8,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "geoip.h" #include "router.h" #include "routerlist.h" -- cgit v1.2.3 From c4f8f1316e18e5eeb6efc14659a66f3d6feb0adf Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Thu, 22 Jul 2010 10:22:51 +0200 Subject: Create config.h --- src/or/buffers.c | 1 + src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/command.c | 1 + src/or/config.c | 1 + src/or/config.h | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/control.c | 1 + src/or/cpuworker.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/dns.c | 1 + src/or/dnsserv.c | 1 + src/or/geoip.c | 1 + src/or/hibernate.c | 1 + src/or/main.c | 1 + src/or/microdesc.c | 1 + src/or/networkstatus.c | 1 + src/or/onion.c | 1 + src/or/or.h | 62 -------------------------------------- src/or/policies.c | 1 + src/or/reasons.c | 1 + src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendmid.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test.c | 1 + src/test/test_util.c | 1 + 37 files changed, 113 insertions(+), 62 deletions(-) create mode 100644 src/or/config.h (limited to 'src/or/rephist.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index 807ca5076..2c1ba78ec 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -13,6 +13,7 @@ #define BUFFERS_PRIVATE #include "or.h" #include "buffers.h" +#include "config.h" #include "../common/util.h" #include "../common/torlog.h" #ifdef HAVE_UNISTD_H diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 9d54dbec5..041aed3a0 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index dbbe7bf36..a4ec4c06a 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -13,6 +13,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 6ae929e84..70def3d48 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -13,6 +13,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 1a5c893b7..96c5fca59 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -19,6 +19,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "command.h" +#include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index e9c9cbd69..a87238bec 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -14,6 +14,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "config.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/config.h b/src/or/config.h new file mode 100644 index 000000000..7a4ba5c60 --- /dev/null +++ b/src/or/config.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file config.h + * \brief Header file for config.c. + **/ + +#ifndef _TOR_CONFIG_H +#define _TOR_CONFIG_H + +const char *get_dirportfrontpage(void); +or_options_t *get_options(void); +int set_options(or_options_t *new_val, char **msg); +void config_free_all(void); +const char *safe_str_client(const char *address); +const char *safe_str(const char *address); +const char *escaped_safe_str_client(const char *address); +const char *escaped_safe_str(const char *address); +const char *get_version(void); + +int config_get_lines(const char *string, config_line_t **result); +void config_free_lines(config_line_t *front); +setopt_err_t options_trial_assign(config_line_t *list, int use_defaults, + int clear_first, char **msg); +int resolve_my_address(int warn_severity, or_options_t *options, + uint32_t *addr, char **hostname_out); +int is_local_addr(const tor_addr_t *addr) ATTR_PURE; +void options_init(or_options_t *options); +char *options_dump(or_options_t *options, int minimal); +int options_init_from_torrc(int argc, char **argv); +setopt_err_t options_init_from_string(const char *cf, + int command, const char *command_arg, char **msg); +int option_is_recognized(const char *key); +const char *option_get_canonical_name(const char *key); +config_line_t *option_get_assignment(or_options_t *options, + const char *key); +int options_save_current(void); +const char *get_torrc_fname(void); +char *options_get_datadir_fname2_suffix(or_options_t *options, + const char *sub1, const char *sub2, + const char *suffix); +#define get_datadir_fname2_suffix(sub1, sub2, suffix) \ + options_get_datadir_fname2_suffix(get_options(), (sub1), (sub2), (suffix)) +/** Return a newly allocated string containing datadir/sub1. See + * get_datadir_fname2_suffix. */ +#define get_datadir_fname(sub1) get_datadir_fname2_suffix((sub1), NULL, NULL) +/** Return a newly allocated string containing datadir/sub1/sub2. See + * get_datadir_fname2_suffix. */ +#define get_datadir_fname2(sub1,sub2) \ + get_datadir_fname2_suffix((sub1), (sub2), NULL) +/** Return a newly allocated string containing datadir/sub1suffix. See + * get_datadir_fname2_suffix. */ +#define get_datadir_fname_suffix(sub1, suffix) \ + get_datadir_fname2_suffix((sub1), NULL, (suffix)) + +or_state_t *get_or_state(void); +int or_state_save(time_t now); + +int options_need_geoip_info(or_options_t *options, const char **reason_out); +int getinfo_helper_config(control_connection_t *conn, + const char *question, char **answer, + const char **errmsg); + +const char *tor_get_digests(void); +uint32_t get_effective_bwrate(or_options_t *options); +uint32_t get_effective_bwburst(or_options_t *options); + +#ifdef CONFIG_PRIVATE +/* Used only by config.c and test.c */ +or_options_t *options_new(void); +#endif + +#endif + diff --git a/src/or/connection.c b/src/or/connection.c index 255dcccdf..5265430ac 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 311c48161..ec49d6632 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -13,6 +13,7 @@ #include "buffers.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index a1e372003..f9fda6553 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -14,6 +14,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "command.h" +#include "config.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index 9c2f4f55d..f6363e522 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index b9c51d4fc..babc6d67b 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -16,6 +16,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "config.h" #include "router.h" /** The maximum number of cpuworker processes we will keep around. */ diff --git a/src/or/directory.c b/src/or/directory.c index 40f1a1e7f..fa340c126 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -6,6 +6,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "config.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index d24fca027..217734487 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -6,6 +6,7 @@ #define DIRSERV_PRIVATE #include "or.h" #include "buffers.h" +#include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 782e04c1b..6e6bf8d08 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -5,6 +5,7 @@ #define DIRVOTE_PRIVATE #include "or.h" +#include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dns.c b/src/or/dns.c index 131304711..905be3ef9 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -14,6 +14,7 @@ #include "or.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c index 390ef2f7b..68d8122f8 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -10,6 +10,7 @@ #include "or.h" #include "dnsserv.h" +#include "config.h" #ifdef HAVE_EVENT2_DNS_H #include <event2/dns.h> #include <event2/dns_compat.h> diff --git a/src/or/geoip.c b/src/or/geoip.c index 5275c6ec7..16b3b14ed 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -10,6 +10,7 @@ #define GEOIP_PRIVATE #include "or.h" #include "ht.h" +#include "config.h" #include "dnsserv.h" #include "geoip.h" #include "routerlist.h" diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 245c6d4ef..74b1d85de 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -22,6 +22,7 @@ hibernating, phase 2: */ #include "or.h" +#include "config.h" #include "router.h" /** Possible values of hibernate_state */ diff --git a/src/or/main.c b/src/or/main.c index 9d4dfed80..4af66c356 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -17,6 +17,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "command.h" +#include "config.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/microdesc.c b/src/or/microdesc.c index b3c54a84f..0e478bf2a 100644 --- a/src/or/microdesc.c +++ b/src/or/microdesc.c @@ -2,6 +2,7 @@ /* See LICENSE for licensing information */ #include "or.h" +#include "config.h" /** A data structure to hold a bunch of cached microdescriptors. There are * two active files in the cache: a "cache file" that we mmap, and a "journal diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 06472f2e6..34ead6f30 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitbuild.h" +#include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/onion.c b/src/or/onion.c index 2d666475f..5b4f3a07c 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitlist.h" +#include "config.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ diff --git a/src/or/or.h b/src/or/or.h index 29d51fc19..d2b6dd8bc 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3066,68 +3066,6 @@ typedef enum setopt_err_t { SETOPT_ERR_SETTING = -4, } setopt_err_t; -const char *get_dirportfrontpage(void); -or_options_t *get_options(void); -int set_options(or_options_t *new_val, char **msg); -void config_free_all(void); -const char *safe_str_client(const char *address); -const char *safe_str(const char *address); -const char *escaped_safe_str_client(const char *address); -const char *escaped_safe_str(const char *address); -const char *get_version(void); - -int config_get_lines(const char *string, config_line_t **result); -void config_free_lines(config_line_t *front); -setopt_err_t options_trial_assign(config_line_t *list, int use_defaults, - int clear_first, char **msg); -int resolve_my_address(int warn_severity, or_options_t *options, - uint32_t *addr, char **hostname_out); -int is_local_addr(const tor_addr_t *addr) ATTR_PURE; -void options_init(or_options_t *options); -char *options_dump(or_options_t *options, int minimal); -int options_init_from_torrc(int argc, char **argv); -setopt_err_t options_init_from_string(const char *cf, - int command, const char *command_arg, char **msg); -int option_is_recognized(const char *key); -const char *option_get_canonical_name(const char *key); -config_line_t *option_get_assignment(or_options_t *options, - const char *key); -int options_save_current(void); -const char *get_torrc_fname(void); -char *options_get_datadir_fname2_suffix(or_options_t *options, - const char *sub1, const char *sub2, - const char *suffix); -#define get_datadir_fname2_suffix(sub1, sub2, suffix) \ - options_get_datadir_fname2_suffix(get_options(), (sub1), (sub2), (suffix)) -/** Return a newly allocated string containing datadir/sub1. See - * get_datadir_fname2_suffix. */ -#define get_datadir_fname(sub1) get_datadir_fname2_suffix((sub1), NULL, NULL) -/** Return a newly allocated string containing datadir/sub1/sub2. See - * get_datadir_fname2_suffix. */ -#define get_datadir_fname2(sub1,sub2) \ - get_datadir_fname2_suffix((sub1), (sub2), NULL) -/** Return a newly allocated string containing datadir/sub1suffix. See - * get_datadir_fname2_suffix. */ -#define get_datadir_fname_suffix(sub1, suffix) \ - get_datadir_fname2_suffix((sub1), NULL, (suffix)) - -or_state_t *get_or_state(void); -int or_state_save(time_t now); - -int options_need_geoip_info(or_options_t *options, const char **reason_out); -int getinfo_helper_config(control_connection_t *conn, - const char *question, char **answer, - const char **errmsg); - -const char *tor_get_digests(void); -uint32_t get_effective_bwrate(or_options_t *options); -uint32_t get_effective_bwburst(or_options_t *options); - -#ifdef CONFIG_PRIVATE -/* Used only by config.c and test.c */ -or_options_t *options_new(void); -#endif - /********************************* connection.c ***************************/ const char *conn_type_to_string(int type); diff --git a/src/or/policies.c b/src/or/policies.c index f5c02a600..8866b57c9 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "config.h" #include "ht.h" /** Policy that addresses for incoming SOCKS connections must match. */ diff --git a/src/or/reasons.c b/src/or/reasons.c index e1c64ebff..569e25390 100644 --- a/src/or/reasons.c +++ b/src/or/reasons.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "config.h" /***************************** Edge (stream) reasons **********************/ diff --git a/src/or/relay.c b/src/or/relay.c index 87f453dac..53631ab41 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -15,6 +15,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "config.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index c8e6c0a4f..5e1f81ee4 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -11,6 +11,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index e8d101484..a8862ae44 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitbuild.h" +#include "config.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rendmid.c b/src/or/rendmid.c index a248828a0..f99654372 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitlist.h" +#include "config.h" /** Respond to an ESTABLISH_INTRO cell by checking the signed data and * setting the circuit's purpose and service pk digest. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index fea0b06a1..a7ed2007f 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -11,6 +11,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rephist.c b/src/or/rephist.c index 4fa421e51..88ba83e3e 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/router.c b/src/or/router.c index a1af88f57..20990b2dd 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitlist.h" #include "circuituse.h" +#include "config.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 76e9b1b3d..5cf698aaa 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" +#include "config.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 1a770c87e..b406a1cba 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "config.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/test/test.c b/src/test/test.c index ef9d9d61e..30bb1a0f7 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -45,6 +45,7 @@ double fabs(double x); #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "config.h" #include "geoip.h" #include "rendcommon.h" #include "test.h" diff --git a/src/test/test_util.c b/src/test/test_util.c index bba96325c..fc31d055c 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -7,6 +7,7 @@ #define CONTROL_PRIVATE #define MEMPOOL_PRIVATE #include "or.h" +#include "config.h" #include "test.h" #include "mempool.h" #include "memarea.h" -- cgit v1.2.3 From df9d42cef56c856db44c22cd3e2eb2a6e2ff1e4c Mon Sep 17 00:00:00 2001 From: Sebastian Hahn <sebastian@torproject.org> Date: Fri, 23 Jul 2010 22:57:20 +0200 Subject: Create rephist.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/config.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/main.c | 1 + src/or/onion.c | 1 + src/or/or.h | 62 ------------------------------------- src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendmid.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/rephist.h | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test.c | 1 + 23 files changed, 100 insertions(+), 62 deletions(-) create mode 100644 src/or/rephist.h (limited to 'src/or/rephist.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index b78845fdd..fc3dbda13 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -26,6 +26,7 @@ #include "onion.h" #include "policies.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index df4aec727..c581365f8 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -23,6 +23,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index b13e558d0..a3f10a884 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -21,6 +21,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 4fdf32e0a..a4e4f89c1 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -30,6 +30,7 @@ #include "relay.h" #include "rendclient.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #ifdef MS_WINDOWS diff --git a/src/or/connection.c b/src/or/connection.c index d9aa1cf78..02acd97e7 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -32,6 +32,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "router.h" static connection_t *connection_create_listener( diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 83ba23058..7522368c5 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -29,6 +29,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index bf19503d5..405df1578 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -24,6 +24,7 @@ #include "networkstatus.h" #include "reasons.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index 1c13cbd3d..c1e68bf45 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -19,6 +19,7 @@ #include "policies.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 38fc8f161..397a0c866 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -17,6 +17,7 @@ #include "microdesc.h" #include "networkstatus.h" #include "policies.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 7873e49e7..2448a6a19 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -12,6 +12,7 @@ #include "microdesc.h" #include "networkstatus.h" #include "policies.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index e202a109d..92c60e7e8 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -40,6 +40,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #ifdef USE_DMALLOC diff --git a/src/or/onion.c b/src/or/onion.c index 1612d389d..ebc358364 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "config.h" #include "onion.h" +#include "rephist.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ diff --git a/src/or/or.h b/src/or/or.h index 3e7fe2310..f51da60f7 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3311,51 +3311,6 @@ typedef enum { /********************************* rephist.c ***************************/ -void rep_hist_init(void); -void rep_hist_note_connect_failed(const char* nickname, time_t when); -void rep_hist_note_connect_succeeded(const char* nickname, time_t when); -void rep_hist_note_disconnect(const char* nickname, time_t when); -void rep_hist_note_connection_died(const char* nickname, time_t when); -void rep_hist_note_extend_succeeded(const char *from_name, - const char *to_name); -void rep_hist_note_extend_failed(const char *from_name, const char *to_name); -void rep_hist_dump_stats(time_t now, int severity); -void rep_hist_note_bytes_read(size_t num_bytes, time_t when); -void rep_hist_note_bytes_written(size_t num_bytes, time_t when); -void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes); -void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes); -void rep_hist_note_exit_stream_opened(uint16_t port); -void rep_hist_exit_stats_init(time_t now); -void rep_hist_exit_stats_write(time_t now); -int rep_hist_bandwidth_assess(void); -char *rep_hist_get_bandwidth_lines(int for_extrainfo); -void rep_hist_update_state(or_state_t *state); -int rep_hist_load_state(or_state_t *state, char **err); -void rep_history_clean(time_t before); - -void rep_hist_note_router_reachable(const char *id, time_t when); -void rep_hist_note_router_unreachable(const char *id, time_t when); -int rep_hist_record_mtbf_data(time_t now, int missing_means_down); -int rep_hist_load_mtbf_data(time_t now); - -time_t rep_hist_downrate_old_runs(time_t now); -double rep_hist_get_stability(const char *id, time_t when); -double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when); -long rep_hist_get_weighted_time_known(const char *id, time_t when); -int rep_hist_have_measured_enough_stability(void); -const char *rep_hist_get_router_stability_doc(time_t now); - -void rep_hist_note_used_port(time_t now, uint16_t port); -smartlist_t *rep_hist_get_predicted_ports(time_t now); -void rep_hist_note_used_resolve(time_t now); -void rep_hist_note_used_internal(time_t now, int need_uptime, - int need_capacity); -int rep_hist_get_predicted_internal(time_t now, int *need_uptime, - int *need_capacity); - -int any_predicted_circuits(time_t now); -int rep_hist_circbuilding_dormant(time_t now); - /** Possible public/private key operations in Tor: used to keep track of where * we're spending our time. */ typedef enum { @@ -3365,23 +3320,6 @@ typedef enum { TLS_HANDSHAKE_C, TLS_HANDSHAKE_S, REND_CLIENT, REND_MID, REND_SERVER, } pk_op_t; -void note_crypto_pk_op(pk_op_t operation); -void dump_pk_ops(int severity); - -void rep_hist_free_all(void); - -/* for hidden service usage statistics */ -void hs_usage_note_publish_total(const char *service_id, time_t now); -void hs_usage_note_publish_novel(const char *service_id, time_t now); -void hs_usage_note_fetch_total(const char *service_id, time_t now); -void hs_usage_note_fetch_successful(const char *service_id, time_t now); -void hs_usage_write_statistics_to_file(time_t now); -void hs_usage_free_all(void); - -void rep_hist_buffer_stats_init(time_t now); -void rep_hist_buffer_stats_add_circ(circuit_t *circ, - time_t end_of_interval); -void rep_hist_buffer_stats_write(time_t now); /********************************* rendcommon.c ***************************/ diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 166d38da8..0377f121c 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -19,6 +19,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "routerlist.h" /** Called when we've established a circuit to an introduction point: diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index fc43f11bb..8a4de3cca 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -15,6 +15,7 @@ #include "rendcommon.h" #include "rendmid.h" #include "rendservice.h" +#include "rephist.h" #include "routerlist.h" /** Return 0 if one and two are the same service ids, else -1 or 1 */ diff --git a/src/or/rendmid.c b/src/or/rendmid.c index 48cb10f52..d392f8e53 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -12,6 +12,7 @@ #include "config.h" #include "relay.h" #include "rendmid.h" +#include "rephist.h" /** Respond to an ESTABLISH_INTRO cell by checking the signed data and * setting the circuit's purpose and service pk digest. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 2c1c8cfde..f7ab60dbf 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -19,6 +19,7 @@ #include "rendservice.h" #include "router.h" #include "relay.h" +#include "rephist.h" #include "routerlist.h" static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, diff --git a/src/or/rephist.c b/src/or/rephist.c index 88ba83e3e..a419f31e7 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -13,6 +13,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/rephist.h b/src/or/rephist.h new file mode 100644 index 000000000..1720c9a9f --- /dev/null +++ b/src/or/rephist.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file rephist.h + * \brief Header file for rephist functions + **/ + +#ifndef _TOR_REPHIST_H +#define _TOR_REPHIST_H + +void rep_hist_init(void); +void rep_hist_note_connect_failed(const char* nickname, time_t when); +void rep_hist_note_connect_succeeded(const char* nickname, time_t when); +void rep_hist_note_disconnect(const char* nickname, time_t when); +void rep_hist_note_connection_died(const char* nickname, time_t when); +void rep_hist_note_extend_succeeded(const char *from_name, + const char *to_name); +void rep_hist_note_extend_failed(const char *from_name, const char *to_name); +void rep_hist_dump_stats(time_t now, int severity); +void rep_hist_note_bytes_read(size_t num_bytes, time_t when); +void rep_hist_note_bytes_written(size_t num_bytes, time_t when); +void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes); +void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes); +void rep_hist_note_exit_stream_opened(uint16_t port); +void rep_hist_exit_stats_init(time_t now); +void rep_hist_exit_stats_write(time_t now); +int rep_hist_bandwidth_assess(void); +char *rep_hist_get_bandwidth_lines(int for_extrainfo); +void rep_hist_update_state(or_state_t *state); +int rep_hist_load_state(or_state_t *state, char **err); +void rep_history_clean(time_t before); + +void rep_hist_note_router_reachable(const char *id, time_t when); +void rep_hist_note_router_unreachable(const char *id, time_t when); +int rep_hist_record_mtbf_data(time_t now, int missing_means_down); +int rep_hist_load_mtbf_data(time_t now); + +time_t rep_hist_downrate_old_runs(time_t now); +double rep_hist_get_stability(const char *id, time_t when); +double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when); +long rep_hist_get_weighted_time_known(const char *id, time_t when); +int rep_hist_have_measured_enough_stability(void); +const char *rep_hist_get_router_stability_doc(time_t now); + +void rep_hist_note_used_port(time_t now, uint16_t port); +smartlist_t *rep_hist_get_predicted_ports(time_t now); +void rep_hist_note_used_resolve(time_t now); +void rep_hist_note_used_internal(time_t now, int need_uptime, + int need_capacity); +int rep_hist_get_predicted_internal(time_t now, int *need_uptime, + int *need_capacity); + +int any_predicted_circuits(time_t now); +int rep_hist_circbuilding_dormant(time_t now); + +void note_crypto_pk_op(pk_op_t operation); +void dump_pk_ops(int severity); + +void rep_hist_free_all(void); + +/* for hidden service usage statistics */ +void hs_usage_note_publish_total(const char *service_id, time_t now); +void hs_usage_note_publish_novel(const char *service_id, time_t now); +void hs_usage_note_fetch_total(const char *service_id, time_t now); +void hs_usage_note_fetch_successful(const char *service_id, time_t now); +void hs_usage_write_statistics_to_file(time_t now); +void hs_usage_free_all(void); + +void rep_hist_buffer_stats_init(time_t now); +void rep_hist_buffer_stats_add_circ(circuit_t *circ, + time_t end_of_interval); +void rep_hist_buffer_stats_write(time_t now); + +#endif + diff --git a/src/or/router.c b/src/or/router.c index bf4256677..36e2d2608 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -20,6 +20,7 @@ #include "main.h" #include "policies.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 1fb3dbc40..7f47e7128 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -26,6 +26,7 @@ #include "policies.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 0662fd3a1..88fbdbf6c 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -20,6 +20,7 @@ #include "memarea.h" #include "microdesc.h" #include "networkstatus.h" +#include "rephist.h" #undef log #include <math.h> diff --git a/src/test/test.c b/src/test/test.c index b5c908a21..8bb694dba 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -55,6 +55,7 @@ double fabs(double x); #include "memarea.h" #include "onion.h" #include "policies.h" +#include "rephist.h" #ifdef USE_DMALLOC #include <dmalloc.h> -- cgit v1.2.3