From ff4030f6211033be127dd4f671f34b15998b101a Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Wed, 21 Jul 2010 14:38:52 +0200 Subject: Create geoip.h --- src/or/relay.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/or/relay.c') diff --git a/src/or/relay.c b/src/or/relay.c index fab2d8896..1c15549d0 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -12,6 +12,7 @@ #include #include "or.h" +#include "geoip.h" #include "mempool.h" static int relay_crypt(circuit_t *circ, cell_t *cell, -- cgit v1.2.3 From cbee969f407b53d2b453d03460eb2864d0eaf1db Mon Sep 17 00:00:00 2001 From: Sebastian Hahn 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/relay.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 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 #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 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 s 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 #include 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 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 31e81439e164aa1d098bae3914b6013ed2c3569a Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Wed, 21 Jul 2010 17:52:54 +0200 Subject: Create rendcommon.h --- src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/directory.c | 1 + src/or/main.c | 1 + src/or/or.h | 48 ------------------------------------ src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendcommon.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/rendservice.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test.c | 1 + 15 files changed, 77 insertions(+), 48 deletions(-) create mode 100644 src/or/rendcommon.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index cc33fcb35..2de5b4e90 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "rendcommon.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 753ae7b78..c76cbd4cc 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/connection.c b/src/or/connection.c index c0e4f387b..2a3cdab8c 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -13,6 +13,7 @@ #include "or.h" #include "dnsserv.h" #include "geoip.h" +#include "rendcommon.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 8c63d516e..ee271ecb5 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -11,6 +11,7 @@ #include "or.h" #include "dnsserv.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index 1e311697d..d81a3db70 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -5,6 +5,7 @@ #include "or.h" #include "geoip.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 271d6fe77..12f1c9eaa 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -14,6 +14,7 @@ #include "or.h" #include "dnsserv.h" #include "geoip.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" #ifdef USE_DMALLOC diff --git a/src/or/or.h b/src/or/or.h index e9fd5b1b9..d1c15e2d1 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4679,26 +4679,6 @@ typedef struct rend_service_descriptor_t { smartlist_t *successful_uploads; } rend_service_descriptor_t; -/** Free all storage associated with data */ -static INLINE void -rend_data_free(rend_data_t *data) -{ - tor_free(data); -} - -int rend_cmp_service_ids(const char *one, const char *two); - -void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint, - int command, size_t length, const char *payload); - -void rend_service_descriptor_free(rend_service_descriptor_t *desc); -rend_service_descriptor_t *rend_parse_service_descriptor(const char *str, - size_t len); -int rend_get_service_id(crypto_pk_env_t *pk, char *out); -void rend_encoded_v2_service_descriptor_free( - rend_encoded_v2_service_descriptor_t *desc); -void rend_intro_point_free(rend_intro_point_t *intro); - /** A cached rendezvous descriptor. */ typedef struct rend_cache_entry_t { size_t len; /**< Length of desc */ @@ -4707,34 +4687,6 @@ typedef struct rend_cache_entry_t { rend_service_descriptor_t *parsed; /**< Parsed value of 'desc' */ } rend_cache_entry_t; -void rend_cache_init(void); -void rend_cache_clean(void); -void rend_cache_clean_v2_descs_as_dir(void); -void rend_cache_free_all(void); -int rend_valid_service_id(const char *query); -int rend_cache_lookup_desc(const char *query, int version, const char **desc, - size_t *desc_len); -int rend_cache_lookup_entry(const char *query, int version, - rend_cache_entry_t **entry_out); -int rend_cache_lookup_v2_desc_as_dir(const char *query, const char **desc); -int rend_cache_store(const char *desc, size_t desc_len, int published); -int rend_cache_store_v2_desc_as_client(const char *desc, - const rend_data_t *rend_query); -int rend_cache_store_v2_desc_as_dir(const char *desc); -int rend_cache_size(void); -int rend_encode_v2_descriptors(smartlist_t *descs_out, - rend_service_descriptor_t *desc, time_t now, - uint8_t period, rend_auth_type_t auth_type, - crypto_pk_env_t *client_key, - smartlist_t *client_cookies); -int rend_compute_v2_desc_id(char *desc_id_out, const char *service_id, - const char *descriptor_cookie, - time_t now, uint8_t replica); -int rend_id_is_in_interval(const char *a, const char *b, const char *c); -void rend_get_descriptor_id_bytes(char *descriptor_id_out, - const char *service_id, - const char *secret_id_part); - /********************************* rendservice.c ***************************/ int num_rend_services(void); diff --git a/src/or/relay.c b/src/or/relay.c index d227bdfed..2b0a7d3ae 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 "rendcommon.h" #include "routerlist.h" static int relay_crypt(circuit_t *circ, cell_t *cell, diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 0a9f483e5..880182f90 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "rendcommon.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 4af041525..891973dfc 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "rendcommon.h" #include "routerlist.h" /** Return 0 if one and two are the same service ids, else -1 or 1 */ diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h new file mode 100644 index 000000000..5d60c2258 --- /dev/null +++ b/src/or/rendcommon.h @@ -0,0 +1,64 @@ +/* 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 rendcommon.h + * \brief Header file for common rend functions + **/ + +#ifndef _TOR_RENDCOMMON_H +#define _TOR_RENDCOMMON_H + +/** Free all storage associated with data */ +static INLINE void +rend_data_free(rend_data_t *data) +{ + tor_free(data); +} + +int rend_cmp_service_ids(const char *one, const char *two); + +void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint, + int command, size_t length, const char *payload); + +void rend_service_descriptor_free(rend_service_descriptor_t *desc); +rend_service_descriptor_t *rend_parse_service_descriptor(const char *str, + size_t len); +int rend_get_service_id(crypto_pk_env_t *pk, char *out); +void rend_encoded_v2_service_descriptor_free( + rend_encoded_v2_service_descriptor_t *desc); +void rend_intro_point_free(rend_intro_point_t *intro); + +void rend_cache_init(void); +void rend_cache_clean(void); +void rend_cache_clean_v2_descs_as_dir(void); +void rend_cache_free_all(void); +int rend_valid_service_id(const char *query); +int rend_cache_lookup_desc(const char *query, int version, const char **desc, + size_t *desc_len); +int rend_cache_lookup_entry(const char *query, int version, + rend_cache_entry_t **entry_out); +int rend_cache_lookup_v2_desc_as_dir(const char *query, const char **desc); +int rend_cache_store(const char *desc, size_t desc_len, int published); +int rend_cache_store_v2_desc_as_client(const char *desc, + const rend_data_t *rend_query); +int rend_cache_store_v2_desc_as_dir(const char *desc); +int rend_cache_size(void); +int rend_encode_v2_descriptors(smartlist_t *descs_out, + rend_service_descriptor_t *desc, time_t now, + uint8_t period, rend_auth_type_t auth_type, + crypto_pk_env_t *client_key, + smartlist_t *client_cookies); +int rend_compute_v2_desc_id(char *desc_id_out, const char *service_id, + const char *descriptor_cookie, + time_t now, uint8_t replica); +int rend_id_is_in_interval(const char *a, const char *b, const char *c); +void rend_get_descriptor_id_bytes(char *descriptor_id_out, + const char *service_id, + const char *secret_id_part); + +#endif + diff --git a/src/or/rendservice.c b/src/or/rendservice.c index c7dc3c901..ce37a470c 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index b4803e9ac..02480af03 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -13,6 +13,7 @@ #include "or.h" #include "geoip.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 760f876c3..1a770c87e 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "rendcommon.h" #include "router.h" #include "routerlist.h" #include "memarea.h" diff --git a/src/test/test.c b/src/test/test.c index b8b26b3d9..6cf9ea075 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -44,6 +44,7 @@ double fabs(double x); #include "or.h" #include "geoip.h" +#include "rendcommon.h" #include "test.h" #include "torgzip.h" #include "mempool.h" -- cgit v1.2.3 From 34dfce0d82b7660ccf80da8314ca664a44b24126 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 00:46:18 +0200 Subject: Create buffers.h --- src/or/buffers.c | 1 + src/or/buffers.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 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/main.c | 1 + src/or/or.h | 45 ------------------------------------ src/or/relay.c | 1 + src/test/test.c | 1 + 13 files changed, 70 insertions(+), 45 deletions(-) create mode 100644 src/or/buffers.h (limited to 'src/or/relay.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index c4ebc8135..807ca5076 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -12,6 +12,7 @@ **/ #define BUFFERS_PRIVATE #include "or.h" +#include "buffers.h" #include "../common/util.h" #include "../common/torlog.h" #ifdef HAVE_UNISTD_H diff --git a/src/or/buffers.h b/src/or/buffers.h new file mode 100644 index 000000000..42d92dd89 --- /dev/null +++ b/src/or/buffers.h @@ -0,0 +1,59 @@ +/* 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 buffers.h + * \brief Header file for buffers.c. + **/ + +#ifndef _TOR_BUFFERS_H +#define _TOR_BUFFERS_H + +buf_t *buf_new(void); +buf_t *buf_new_with_capacity(size_t size); +void buf_free(buf_t *buf); +void buf_clear(buf_t *buf); +void buf_shrink(buf_t *buf); +void buf_shrink_freelists(int free_all); +void buf_dump_freelist_sizes(int severity); + +size_t buf_datalen(const buf_t *buf); +size_t buf_allocation(const buf_t *buf); +size_t buf_slack(const buf_t *buf); +const char *_buf_peek_raw_buffer(const buf_t *buf); + +int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof, + int *socket_error); +int read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf); + +int flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen); +int flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t sz, size_t *buf_flushlen); + +int write_to_buf(const char *string, size_t string_len, buf_t *buf); +int write_to_buf_zlib(buf_t *buf, tor_zlib_state_t *state, + const char *data, size_t data_len, int done); +int move_buf_to_buf(buf_t *buf_out, buf_t *buf_in, size_t *buf_flushlen); +int fetch_from_buf(char *string, size_t string_len, buf_t *buf); +int fetch_var_cell_from_buf(buf_t *buf, var_cell_t **out, int linkproto); +int fetch_from_buf_http(buf_t *buf, + char **headers_out, size_t max_headerlen, + char **body_out, size_t *body_used, size_t max_bodylen, + int force_complete); +int fetch_from_buf_socks(buf_t *buf, socks_request_t *req, + int log_sockstype, int safe_socks); +int fetch_from_buf_socks_client(buf_t *buf, int state, char **reason); +int fetch_from_buf_line(buf_t *buf, char *data_out, size_t *data_len); + +int peek_buf_has_control0_command(buf_t *buf); + +void assert_buf_ok(buf_t *buf); + +#ifdef BUFFERS_PRIVATE +int buf_find_string_offset(const buf_t *buf, const char *s, size_t n); +#endif + +#endif + diff --git a/src/or/connection.c b/src/or/connection.c index e8b78eab5..0f0d4e152 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "buffers.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 44e366b60..84752f15b 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "buffers.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 b1ed17449..d7958cb4e 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "buffers.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index b99451327..1c61a08c0 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -11,6 +11,7 @@ #define CONTROL_PRIVATE #include "or.h" +#include "buffers.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index b3514af60..e5e4a3ea6 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -13,6 +13,7 @@ **/ #include "or.h" +#include "buffers.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 d1bb78f20..591377aca 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -4,6 +4,7 @@ /* See LICENSE for licensing information */ #include "or.h" +#include "buffers.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 59a8fdc88..d24fca027 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -5,6 +5,7 @@ #define DIRSERV_PRIVATE #include "or.h" +#include "buffers.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 4bd3b0a0f..f206a463e 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -12,6 +12,7 @@ #define MAIN_PRIVATE #include "or.h" +#include "buffers.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index ef2a30300..e3d6543ff 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2911,51 +2911,6 @@ struct socks_request_t { /* all the function prototypes go here */ -/********************************* buffers.c ***************************/ - -buf_t *buf_new(void); -buf_t *buf_new_with_capacity(size_t size); -void buf_free(buf_t *buf); -void buf_clear(buf_t *buf); -void buf_shrink(buf_t *buf); -void buf_shrink_freelists(int free_all); -void buf_dump_freelist_sizes(int severity); - -size_t buf_datalen(const buf_t *buf); -size_t buf_allocation(const buf_t *buf); -size_t buf_slack(const buf_t *buf); -const char *_buf_peek_raw_buffer(const buf_t *buf); - -int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof, - int *socket_error); -int read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf); - -int flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen); -int flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t sz, size_t *buf_flushlen); - -int write_to_buf(const char *string, size_t string_len, buf_t *buf); -int write_to_buf_zlib(buf_t *buf, tor_zlib_state_t *state, - const char *data, size_t data_len, int done); -int move_buf_to_buf(buf_t *buf_out, buf_t *buf_in, size_t *buf_flushlen); -int fetch_from_buf(char *string, size_t string_len, buf_t *buf); -int fetch_var_cell_from_buf(buf_t *buf, var_cell_t **out, int linkproto); -int fetch_from_buf_http(buf_t *buf, - char **headers_out, size_t max_headerlen, - char **body_out, size_t *body_used, size_t max_bodylen, - int force_complete); -int fetch_from_buf_socks(buf_t *buf, socks_request_t *req, - int log_sockstype, int safe_socks); -int fetch_from_buf_socks_client(buf_t *buf, int state, char **reason); -int fetch_from_buf_line(buf_t *buf, char *data_out, size_t *data_len); - -int peek_buf_has_control0_command(buf_t *buf); - -void assert_buf_ok(buf_t *buf); - -#ifdef BUFFERS_PRIVATE -int buf_find_string_offset(const buf_t *buf, const char *s, size_t n); -#endif - /********************************* circuitbuild.c **********************/ /** How many hops does a general-purpose circuit have by default? */ diff --git a/src/or/relay.c b/src/or/relay.c index 2b0a7d3ae..c7d6edaed 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -12,6 +12,7 @@ #include #include "or.h" +#include "buffers.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/test/test.c b/src/test/test.c index 6cf9ea075..baffd9e3c 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -43,6 +43,7 @@ long int lround(double x); double fabs(double x); #include "or.h" +#include "buffers.c" #include "geoip.h" #include "rendcommon.h" #include "test.h" -- cgit v1.2.3 From 21155204c68558c9ef7c508e1f6ea008cf455d4a Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 01:21:00 +0200 Subject: Create circuitbuild.h --- src/or/circuitbuild.c | 1 + src/or/circuitbuild.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++++ src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/command.c | 1 + src/or/config.c | 1 + src/or/connection.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/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 110 +------------------------------------------ src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendservice.c | 1 + src/or/routerlist.c | 1 + src/test/test.c | 3 +- 20 files changed, 145 insertions(+), 110 deletions(-) create mode 100644 src/or/circuitbuild.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 08aa2524f..a2f7c2c52 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -12,6 +12,7 @@ #define CIRCUIT_PRIVATE #include "or.h" +#include "circuitbuild.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h new file mode 100644 index 000000000..e19f3d940 --- /dev/null +++ b/src/or/circuitbuild.h @@ -0,0 +1,125 @@ +/* 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 geoip.h + * \brief Header file for circuitbuild.c. + **/ + +#ifndef _TOR_CIRCUITBUILD_H +#define _TOR_CIRCUITBUILD_H + +char *circuit_list_path(origin_circuit_t *circ, int verbose); +char *circuit_list_path_for_controller(origin_circuit_t *circ); +void circuit_log_path(int severity, unsigned int domain, + origin_circuit_t *circ); +void circuit_rep_hist_note_result(origin_circuit_t *circ); +origin_circuit_t *origin_circuit_init(uint8_t purpose, int flags); +origin_circuit_t *circuit_establish_circuit(uint8_t purpose, + extend_info_t *exit, + int flags); +int circuit_handle_first_hop(origin_circuit_t *circ); +void circuit_n_conn_done(or_connection_t *or_conn, int status); +int inform_testing_reachability(void); +int circuit_send_next_onion_skin(origin_circuit_t *circ); +void circuit_note_clock_jumped(int seconds_elapsed); +int circuit_extend(cell_t *cell, circuit_t *circ); +int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data, + int reverse); +int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type, + const char *reply); +int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer); +int onionskin_answer(or_circuit_t *circ, uint8_t cell_type, + const char *payload, const char *keys); +int circuit_all_predicted_ports_handled(time_t now, int *need_uptime, + int *need_capacity); + +int circuit_append_new_exit(origin_circuit_t *circ, extend_info_t *info); +int circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *info); +void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop); +extend_info_t *extend_info_alloc(const char *nickname, const char *digest, + crypto_pk_env_t *onion_key, + const tor_addr_t *addr, uint16_t port); +extend_info_t *extend_info_from_router(routerinfo_t *r); +extend_info_t *extend_info_dup(extend_info_t *info); +void extend_info_free(extend_info_t *info); +routerinfo_t *build_state_get_exit_router(cpath_build_state_t *state); +const char *build_state_get_exit_nickname(cpath_build_state_t *state); + +void entry_guards_compute_status(void); +int entry_guard_register_connect_status(const char *digest, int succeeded, + int mark_relay_status, time_t now); +void entry_nodes_should_be_added(void); +int entry_list_is_constrained(or_options_t *options); +routerinfo_t *choose_random_entry(cpath_build_state_t *state); +int entry_guards_parse_state(or_state_t *state, int set, char **msg); +void entry_guards_update_state(or_state_t *state); +int getinfo_helper_entry_guards(control_connection_t *conn, + const char *question, char **answer, + const char **errmsg); + +void clear_bridge_list(void); +int routerinfo_is_a_configured_bridge(routerinfo_t *ri); +void +learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest); +void bridge_add_from_config(const tor_addr_t *addr, uint16_t port, + char *digest); +void retry_bridge_descriptor_fetch_directly(const char *digest); +void fetch_bridge_descriptors(time_t now); +void learned_bridge_descriptor(routerinfo_t *ri, int from_cache); +int any_bridge_descriptors_known(void); +int any_pending_bridge_descriptor_fetches(void); +int bridges_known_but_down(void); +void bridges_retry_all(void); + +void entry_guards_free_all(void); + +extern circuit_build_times_t circ_times; +void circuit_build_times_update_state(circuit_build_times_t *cbt, + or_state_t *state); +int circuit_build_times_parse_state(circuit_build_times_t *cbt, + or_state_t *state, char **msg); +void circuit_build_times_count_timeout(circuit_build_times_t *cbt, + int did_onehop); +int circuit_build_times_count_close(circuit_build_times_t *cbt, + int did_onehop, time_t start_time); +void circuit_build_times_set_timeout(circuit_build_times_t *cbt); +int circuit_build_times_add_time(circuit_build_times_t *cbt, + build_time_t time); +int circuit_build_times_needs_circuits(circuit_build_times_t *cbt); + +int circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt); +void circuit_build_times_init(circuit_build_times_t *cbt); +void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, + networkstatus_t *ns); +double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt); +double circuit_build_times_close_rate(const circuit_build_times_t *cbt); + +#ifdef CIRCUIT_PRIVATE +double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt, + double quantile); +build_time_t circuit_build_times_generate_sample(circuit_build_times_t *cbt, + double q_lo, double q_hi); +void circuit_build_times_initial_alpha(circuit_build_times_t *cbt, + double quantile, double time_ms); +int circuit_build_times_update_alpha(circuit_build_times_t *cbt); +double circuit_build_times_cdf(circuit_build_times_t *cbt, double x); +void circuit_build_times_add_timeout_worker(circuit_build_times_t *cbt, + double quantile_cutoff); +void circuitbuild_running_unit_tests(void); +void circuit_build_times_reset(circuit_build_times_t *cbt); + +/* Network liveness functions */ +int circuit_build_times_network_check_changed(circuit_build_times_t *cbt); +#endif + +/* Network liveness functions */ +void circuit_build_times_network_is_live(circuit_build_times_t *cbt); +int circuit_build_times_network_check_live(circuit_build_times_t *cbt); +void circuit_build_times_network_circ_success(circuit_build_times_t *cbt); + +#endif + diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index b1272dd7f..52b33197a 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 3bdd8acb1..e4e5d205b 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 8ba45a398..1ca82f7d2 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -16,6 +16,7 @@ */ #include "or.h" +#include "circuitbuild.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 27bdf9367..9996d1cc5 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -12,6 +12,7 @@ #define CONFIG_PRIVATE #include "or.h" +#include "circuitbuild.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index 0f0d4e152..c910c7c5d 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -12,6 +12,7 @@ #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index d7958cb4e..4cec41990 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -12,6 +12,7 @@ #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index 1c61a08c0..ff6d4ce2a 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -12,6 +12,7 @@ #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index e5e4a3ea6..5231f1146 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" +#include "circuitbuild.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 591377aca..40f1a1e7f 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -5,6 +5,7 @@ #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/main.c b/src/or/main.c index f206a463e..a907ddf8f 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -13,6 +13,7 @@ #define MAIN_PRIVATE #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 92a41b964..06472f2e6 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -11,6 +11,7 @@ */ #include "or.h" +#include "circuitbuild.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index e3d6543ff..7afd7115e 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2916,72 +2916,7 @@ struct socks_request_t { /** How many hops does a general-purpose circuit have by default? */ #define DEFAULT_ROUTE_LEN 3 -char *circuit_list_path(origin_circuit_t *circ, int verbose); -char *circuit_list_path_for_controller(origin_circuit_t *circ); -void circuit_log_path(int severity, unsigned int domain, - origin_circuit_t *circ); -void circuit_rep_hist_note_result(origin_circuit_t *circ); -origin_circuit_t *origin_circuit_init(uint8_t purpose, int flags); -origin_circuit_t *circuit_establish_circuit(uint8_t purpose, - extend_info_t *exit, - int flags); -int circuit_handle_first_hop(origin_circuit_t *circ); -void circuit_n_conn_done(or_connection_t *or_conn, int status); -int inform_testing_reachability(void); -int circuit_send_next_onion_skin(origin_circuit_t *circ); -void circuit_note_clock_jumped(int seconds_elapsed); -int circuit_extend(cell_t *cell, circuit_t *circ); -int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data, - int reverse); -int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type, - const char *reply); -int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer); -int onionskin_answer(or_circuit_t *circ, uint8_t cell_type, - const char *payload, const char *keys); -int circuit_all_predicted_ports_handled(time_t now, int *need_uptime, - int *need_capacity); - -int circuit_append_new_exit(origin_circuit_t *circ, extend_info_t *info); -int circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *info); -void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop); -extend_info_t *extend_info_alloc(const char *nickname, const char *digest, - crypto_pk_env_t *onion_key, - const tor_addr_t *addr, uint16_t port); -extend_info_t *extend_info_from_router(routerinfo_t *r); -extend_info_t *extend_info_dup(extend_info_t *info); -void extend_info_free(extend_info_t *info); -routerinfo_t *build_state_get_exit_router(cpath_build_state_t *state); -const char *build_state_get_exit_nickname(cpath_build_state_t *state); - -void entry_guards_compute_status(void); -int entry_guard_register_connect_status(const char *digest, int succeeded, - int mark_relay_status, time_t now); -void entry_nodes_should_be_added(void); -int entry_list_is_constrained(or_options_t *options); -routerinfo_t *choose_random_entry(cpath_build_state_t *state); -int entry_guards_parse_state(or_state_t *state, int set, char **msg); -void entry_guards_update_state(or_state_t *state); -int getinfo_helper_entry_guards(control_connection_t *conn, - const char *question, char **answer, - const char **errmsg); - -void clear_bridge_list(void); -int routerinfo_is_a_configured_bridge(routerinfo_t *ri); -void -learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest); -void bridge_add_from_config(const tor_addr_t *addr, uint16_t port, - char *digest); -void retry_bridge_descriptor_fetch_directly(const char *digest); -void fetch_bridge_descriptors(time_t now); -void learned_bridge_descriptor(routerinfo_t *ri, int from_cache); -int any_bridge_descriptors_known(void); -int any_pending_bridge_descriptor_fetches(void); -int bridges_known_but_down(void); -void bridges_retry_all(void); - -void entry_guards_free_all(void); - -/* Circuit Build Timeout "public" functions and structures. */ +/* Circuit Build Timeout "public" structures. */ /** Total size of the circuit timeout history to accumulate. * 1000 is approx 2.5 days worth of continual-use circuits. */ @@ -3120,49 +3055,6 @@ typedef struct { double close_ms; } circuit_build_times_t; -extern circuit_build_times_t circ_times; -void circuit_build_times_update_state(circuit_build_times_t *cbt, - or_state_t *state); -int circuit_build_times_parse_state(circuit_build_times_t *cbt, - or_state_t *state, char **msg); -void circuit_build_times_count_timeout(circuit_build_times_t *cbt, - int did_onehop); -int circuit_build_times_count_close(circuit_build_times_t *cbt, - int did_onehop, time_t start_time); -void circuit_build_times_set_timeout(circuit_build_times_t *cbt); -int circuit_build_times_add_time(circuit_build_times_t *cbt, - build_time_t time); -int circuit_build_times_needs_circuits(circuit_build_times_t *cbt); -int circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt); -void circuit_build_times_init(circuit_build_times_t *cbt); -void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, - networkstatus_t *ns); -double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt); -double circuit_build_times_close_rate(const circuit_build_times_t *cbt); - -#ifdef CIRCUIT_PRIVATE -double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt, - double quantile); -build_time_t circuit_build_times_generate_sample(circuit_build_times_t *cbt, - double q_lo, double q_hi); -void circuit_build_times_initial_alpha(circuit_build_times_t *cbt, - double quantile, double time_ms); -int circuit_build_times_update_alpha(circuit_build_times_t *cbt); -double circuit_build_times_cdf(circuit_build_times_t *cbt, double x); -void circuit_build_times_add_timeout_worker(circuit_build_times_t *cbt, - double quantile_cutoff); -void circuitbuild_running_unit_tests(void); -void circuit_build_times_reset(circuit_build_times_t *cbt); - -/* Network liveness functions */ -int circuit_build_times_network_check_changed(circuit_build_times_t *cbt); -#endif - -/* Network liveness functions */ -void circuit_build_times_network_is_live(circuit_build_times_t *cbt); -int circuit_build_times_network_check_live(circuit_build_times_t *cbt); -void circuit_build_times_network_circ_success(circuit_build_times_t *cbt); - /********************************* circuitlist.c ***********************/ circuit_t * _circuit_get_global_list(void); diff --git a/src/or/relay.c b/src/or/relay.c index c7d6edaed..eab084d8c 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -13,6 +13,7 @@ #include #include "or.h" #include "buffers.h" +#include "circuitbuild.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 2313dcefd..076d353f3 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index 60f4d25c7..e8d101484 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 4fc031330..0aa0aac32 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 6beecac40..76e9b1b3d 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -12,6 +12,7 @@ **/ #include "or.h" +#include "circuitbuild.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/test/test.c b/src/test/test.c index baffd9e3c..ef9d9d61e 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -43,7 +43,8 @@ long int lround(double x); double fabs(double x); #include "or.h" -#include "buffers.c" +#include "buffers.h" +#include "circuitbuild.h" #include "geoip.h" #include "rendcommon.h" #include "test.h" -- cgit v1.2.3 From 174a88dd79ecf3b6c76d63d44bef3e47378777ee Mon Sep 17 00:00:00 2001 From: Sebastian Hahn 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/relay.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 c4f8f1316e18e5eeb6efc14659a66f3d6feb0adf Mon Sep 17 00:00:00 2001 From: Sebastian Hahn 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/relay.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 #include 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 2a74101f7a45308458ce30a3ea95e58593709613 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 10:32:52 +0200 Subject: Create connection.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.c | 1 + src/or/connection.h | 100 +++++++++++++++++++++++++++++++++++++++++++++++ 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/dns.c | 1 + src/or/dnsserv.c | 1 + src/or/hibernate.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 86 ---------------------------------------- src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + 23 files changed, 121 insertions(+), 86 deletions(-) create mode 100644 src/or/connection.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 041aed3a0..0045080fa 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -16,6 +16,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index a4ec4c06a..3f06e6ea6 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 "connection.h" #include "config.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 70def3d48..f9bf6fe14 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 96c5fca59..22f36fff5 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 "connection.h" #include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index a87238bec..41716d0dc 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index 5265430ac..c7d767126 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -16,6 +16,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection.h b/src/or/connection.h new file mode 100644 index 000000000..f38927e78 --- /dev/null +++ b/src/or/connection.h @@ -0,0 +1,100 @@ +/* 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 connection.h + * \brief Header file for connection.c. + **/ + +#ifndef _TOR_CONNECTION_H +#define _TOR_CONNECTION_H + +const char *conn_type_to_string(int type); +const char *conn_state_to_string(int type, int state); + +dir_connection_t *dir_connection_new(int socket_family); +or_connection_t *or_connection_new(int socket_family); +edge_connection_t *edge_connection_new(int type, int socket_family); +control_connection_t *control_connection_new(int socket_family); +connection_t *connection_new(int type, int socket_family); + +void connection_link_connections(connection_t *conn_a, connection_t *conn_b); +void connection_free(connection_t *conn); +void connection_free_all(void); +void connection_about_to_close_connection(connection_t *conn); +void connection_close_immediate(connection_t *conn); +void _connection_mark_for_close(connection_t *conn,int line, const char *file); + +#define connection_mark_for_close(c) \ + _connection_mark_for_close((c), __LINE__, _SHORT_FILE_) + +void connection_expire_held_open(void); + +int connection_connect(connection_t *conn, const char *address, + const tor_addr_t *addr, + uint16_t port, int *socket_error); + +int connection_proxy_connect(connection_t *conn, int type); +int connection_read_proxy_handshake(connection_t *conn); + +int retry_all_listeners(smartlist_t *replaced_conns, + smartlist_t *new_conns); + +ssize_t connection_bucket_write_limit(connection_t *conn, time_t now); +int global_write_bucket_low(connection_t *conn, size_t attempt, int priority); +void connection_bucket_init(void); +void connection_bucket_refill(int seconds_elapsed, time_t now); + +int connection_handle_read(connection_t *conn); + +int connection_fetch_from_buf(char *string, size_t len, connection_t *conn); + +int connection_wants_to_flush(connection_t *conn); +int connection_outbuf_too_full(connection_t *conn); +int connection_handle_write(connection_t *conn, int force); +void _connection_write_to_buf_impl(const char *string, size_t len, + connection_t *conn, int zlib); +static void connection_write_to_buf(const char *string, size_t len, + connection_t *conn); +static void connection_write_to_buf_zlib(const char *string, size_t len, + dir_connection_t *conn, int done); +static INLINE void +connection_write_to_buf(const char *string, size_t len, connection_t *conn) +{ + _connection_write_to_buf_impl(string, len, conn, 0); +} +static INLINE void +connection_write_to_buf_zlib(const char *string, size_t len, + dir_connection_t *conn, int done) +{ + _connection_write_to_buf_impl(string, len, TO_CONN(conn), done ? -1 : 1); +} + +connection_t *connection_get_by_global_id(uint64_t id); + +connection_t *connection_get_by_type(int type); +connection_t *connection_get_by_type_purpose(int type, int purpose); +connection_t *connection_get_by_type_addr_port_purpose(int type, + const tor_addr_t *addr, + uint16_t port, int purpose); +connection_t *connection_get_by_type_state(int type, int state); +connection_t *connection_get_by_type_state_rendquery(int type, int state, + const char *rendquery); + +#define connection_speaks_cells(conn) ((conn)->type == CONN_TYPE_OR) +int connection_is_listener(connection_t *conn); +int connection_state_is_open(connection_t *conn); +int connection_state_is_connecting(connection_t *conn); + +char *alloc_http_authenticator(const char *authenticator); + +void assert_connection_ok(connection_t *conn, time_t now); +int connection_or_nonopen_was_started_here(or_connection_t *conn); +void connection_dump_buffer_mem_stats(int severity); +void remove_file_if_very_old(const char *fname, time_t now); + +#endif + diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index ec49d6632..530d8b731 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.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 f9fda6553..e8633c10c 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "command.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index f6363e522..75c4ae4f3 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -16,6 +16,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index babc6d67b..9f49e2e36 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -17,6 +17,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "config.h" +#include "connection.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 fa340c126..59e6d0d0f 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -7,6 +7,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 217734487..dc07e802f 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -7,6 +7,7 @@ #include "or.h" #include "buffers.h" #include "config.h" +#include "connection.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dns.c b/src/or/dns.c index 905be3ef9..e8b75d518 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -15,6 +15,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.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 68d8122f8..6e3ccfbdf 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -11,6 +11,7 @@ #include "or.h" #include "dnsserv.h" #include "config.h" +#include "connection.h" #ifdef HAVE_EVENT2_DNS_H #include #include diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 74b1d85de..2a08899cc 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -23,6 +23,7 @@ hibernating, phase 2: #include "or.h" #include "config.h" +#include "connection.h" #include "router.h" /** Possible values of hibernate_state */ diff --git a/src/or/main.c b/src/or/main.c index 4af66c356..9b4033850 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -18,6 +18,7 @@ #include "circuituse.h" #include "command.h" #include "config.h" +#include "connection.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 34ead6f30..c73a30bc3 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" #include "config.h" +#include "connection.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index d2b6dd8bc..bbc31b671 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3066,92 +3066,6 @@ typedef enum setopt_err_t { SETOPT_ERR_SETTING = -4, } setopt_err_t; -/********************************* connection.c ***************************/ - -const char *conn_type_to_string(int type); -const char *conn_state_to_string(int type, int state); - -dir_connection_t *dir_connection_new(int socket_family); -or_connection_t *or_connection_new(int socket_family); -edge_connection_t *edge_connection_new(int type, int socket_family); -control_connection_t *control_connection_new(int socket_family); -connection_t *connection_new(int type, int socket_family); - -void connection_link_connections(connection_t *conn_a, connection_t *conn_b); -void connection_free(connection_t *conn); -void connection_free_all(void); -void connection_about_to_close_connection(connection_t *conn); -void connection_close_immediate(connection_t *conn); -void _connection_mark_for_close(connection_t *conn,int line, const char *file); - -#define connection_mark_for_close(c) \ - _connection_mark_for_close((c), __LINE__, _SHORT_FILE_) - -void connection_expire_held_open(void); - -int connection_connect(connection_t *conn, const char *address, - const tor_addr_t *addr, - uint16_t port, int *socket_error); - -int connection_proxy_connect(connection_t *conn, int type); -int connection_read_proxy_handshake(connection_t *conn); - -int retry_all_listeners(smartlist_t *replaced_conns, - smartlist_t *new_conns); - -ssize_t connection_bucket_write_limit(connection_t *conn, time_t now); -int global_write_bucket_low(connection_t *conn, size_t attempt, int priority); -void connection_bucket_init(void); -void connection_bucket_refill(int seconds_elapsed, time_t now); - -int connection_handle_read(connection_t *conn); - -int connection_fetch_from_buf(char *string, size_t len, connection_t *conn); - -int connection_wants_to_flush(connection_t *conn); -int connection_outbuf_too_full(connection_t *conn); -int connection_handle_write(connection_t *conn, int force); -void _connection_write_to_buf_impl(const char *string, size_t len, - connection_t *conn, int zlib); -static void connection_write_to_buf(const char *string, size_t len, - connection_t *conn); -static void connection_write_to_buf_zlib(const char *string, size_t len, - dir_connection_t *conn, int done); -static INLINE void -connection_write_to_buf(const char *string, size_t len, connection_t *conn) -{ - _connection_write_to_buf_impl(string, len, conn, 0); -} -static INLINE void -connection_write_to_buf_zlib(const char *string, size_t len, - dir_connection_t *conn, int done) -{ - _connection_write_to_buf_impl(string, len, TO_CONN(conn), done ? -1 : 1); -} - -connection_t *connection_get_by_global_id(uint64_t id); - -connection_t *connection_get_by_type(int type); -connection_t *connection_get_by_type_purpose(int type, int purpose); -connection_t *connection_get_by_type_addr_port_purpose(int type, - const tor_addr_t *addr, - uint16_t port, int purpose); -connection_t *connection_get_by_type_state(int type, int state); -connection_t *connection_get_by_type_state_rendquery(int type, int state, - const char *rendquery); - -#define connection_speaks_cells(conn) ((conn)->type == CONN_TYPE_OR) -int connection_is_listener(connection_t *conn); -int connection_state_is_open(connection_t *conn); -int connection_state_is_connecting(connection_t *conn); - -char *alloc_http_authenticator(const char *authenticator); - -void assert_connection_ok(connection_t *conn, time_t now); -int connection_or_nonopen_was_started_here(or_connection_t *conn); -void connection_dump_buffer_mem_stats(int severity); -void remove_file_if_very_old(const char *fname, time_t now); - /********************************* connection_edge.c *************************/ #define connection_mark_unattached_ap(conn, endreason) \ diff --git a/src/or/relay.c b/src/or/relay.c index 53631ab41..59d7282dc 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -16,6 +16,7 @@ #include "circuitbuild.h" #include "circuitlist.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 5e1f81ee4..eb971ac63 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -12,6 +12,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/router.c b/src/or/router.c index 20990b2dd..9cb7ad4f8 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -10,6 +10,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 5cf698aaa..df2960065 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -14,6 +14,7 @@ #include "or.h" #include "circuitbuild.h" #include "config.h" +#include "connection.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" -- cgit v1.2.3 From 78b6a4650b8ea90d99e49aff2a2c20df461bb127 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 10:43:02 +0200 Subject: Create connection_edge.h --- src/or/buffers.c | 1 + 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_edge.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/control.c | 1 + src/or/directory.c | 1 + src/or/dns.c | 1 + src/or/dnsserv.c | 1 + src/or/hibernate.c | 1 + src/or/main.c | 1 + src/or/or.h | 80 --------------------------------------- src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/test/test.c | 1 + 18 files changed, 114 insertions(+), 80 deletions(-) create mode 100644 src/or/connection_edge.h (limited to 'src/or/relay.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index 2c1ba78ec..c9abddcd6 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" #include "config.h" +#include "connection_edge.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 0045080fa..a7b5ee129 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -17,6 +17,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 3f06e6ea6..edcd194e6 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -15,6 +15,7 @@ #include "circuituse.h" #include "connection.h" #include "config.h" +#include "connection_edge.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index f9bf6fe14..d8f1ec76b 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -15,6 +15,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/config.c b/src/or/config.c index 41716d0dc..07e62463e 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -16,6 +16,7 @@ #include "circuitlist.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index c7d767126..dc68bcf1a 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -17,6 +17,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.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 530d8b731..d4f22fac0 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -15,6 +15,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h new file mode 100644 index 000000000..c3d6098c5 --- /dev/null +++ b/src/or/connection_edge.h @@ -0,0 +1,98 @@ +/* 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 connection_edge.h + * \brief Header file for connection_edge.c. + **/ + +#ifndef _TOR_CONNECTION_EDGE_H +#define _TOR_CONNECTION_EDGE_H + +#define connection_mark_unattached_ap(conn, endreason) \ + _connection_mark_unattached_ap((conn), (endreason), __LINE__, _SHORT_FILE_) + +void _connection_mark_unattached_ap(edge_connection_t *conn, int endreason, + int line, const char *file); +int connection_edge_reached_eof(edge_connection_t *conn); +int connection_edge_process_inbuf(edge_connection_t *conn, + int package_partial); +int connection_edge_destroy(circid_t circ_id, edge_connection_t *conn); +int connection_edge_end(edge_connection_t *conn, uint8_t reason); +int connection_edge_end_errno(edge_connection_t *conn); +int connection_edge_finished_flushing(edge_connection_t *conn); +int connection_edge_finished_connecting(edge_connection_t *conn); + +int connection_ap_handshake_send_begin(edge_connection_t *ap_conn); +int connection_ap_handshake_send_resolve(edge_connection_t *ap_conn); + +edge_connection_t *connection_ap_make_link(char *address, uint16_t port, + const char *digest, + int use_begindir, int want_onehop); +void connection_ap_handshake_socks_reply(edge_connection_t *conn, char *reply, + size_t replylen, + int endreason); +void connection_ap_handshake_socks_resolved(edge_connection_t *conn, + int answer_type, + size_t answer_len, + const char *answer, + int ttl, + time_t expires); + +int connection_exit_begin_conn(cell_t *cell, circuit_t *circ); +int connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ); +void connection_exit_connect(edge_connection_t *conn); +int connection_edge_is_rendezvous_stream(edge_connection_t *conn); +int connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, + int excluded_means_no); +void connection_ap_expire_beginning(void); +void connection_ap_attach_pending(void); +void connection_ap_fail_onehop(const char *failed_digest, + cpath_build_state_t *build_state); +void circuit_discard_optional_exit_enclaves(extend_info_t *info); +int connection_ap_detach_retriable(edge_connection_t *conn, + origin_circuit_t *circ, + int reason); +int connection_ap_process_transparent(edge_connection_t *conn); + +int address_is_invalid_destination(const char *address, int client); + +void addressmap_init(void); +void addressmap_clean(time_t now); +void addressmap_clear_configured(void); +void addressmap_clear_transient(void); +void addressmap_free_all(void); +int addressmap_rewrite(char *address, size_t maxlen, time_t *expires_out); +int addressmap_have_mapping(const char *address, int update_timeout); + +void addressmap_register(const char *address, char *new_address, + time_t expires, addressmap_entry_source_t source); +int parse_virtual_addr_network(const char *val, int validate_only, + char **msg); +int client_dns_incr_failures(const char *address); +void client_dns_clear_failures(const char *address); +void client_dns_set_addressmap(const char *address, uint32_t val, + const char *exitname, int ttl); +const char *addressmap_register_virtual_address(int type, char *new_address); +void addressmap_get_mappings(smartlist_t *sl, time_t min_expires, + time_t max_expires, int want_expiry); +int connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, + origin_circuit_t *circ, + crypt_path_t *cpath); +int hostname_is_noconnect_address(const char *address); + +/** Possible return values for parse_extended_hostname. */ +typedef enum hostname_type_t { + NORMAL_HOSTNAME, ONION_HOSTNAME, EXIT_HOSTNAME, BAD_HOSTNAME +} hostname_type_t; +hostname_type_t parse_extended_hostname(char *address, int allowdotexit); + +#if defined(HAVE_NET_IF_H) && defined(HAVE_NET_PFVAR_H) +int get_pf_socket(void); +#endif + +#endif + diff --git a/src/or/control.c b/src/or/control.c index 75c4ae4f3..97d1b9d2d 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -17,6 +17,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/directory.c b/src/or/directory.c index 59e6d0d0f..7d8d7ab4f 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -8,6 +8,7 @@ #include "circuitbuild.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dns.c b/src/or/dns.c index e8b75d518..5520a493a 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -16,6 +16,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.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 6e3ccfbdf..4c471105c 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -12,6 +12,7 @@ #include "dnsserv.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #ifdef HAVE_EVENT2_DNS_H #include #include diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 2a08899cc..cd7cdad3d 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -24,6 +24,7 @@ hibernating, phase 2: #include "or.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "router.h" /** Possible values of hibernate_state */ diff --git a/src/or/main.c b/src/or/main.c index 9b4033850..781139749 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -19,6 +19,7 @@ #include "command.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index bbc31b671..31c57000b 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3068,61 +3068,6 @@ typedef enum setopt_err_t { /********************************* connection_edge.c *************************/ -#define connection_mark_unattached_ap(conn, endreason) \ - _connection_mark_unattached_ap((conn), (endreason), __LINE__, _SHORT_FILE_) - -void _connection_mark_unattached_ap(edge_connection_t *conn, int endreason, - int line, const char *file); -int connection_edge_reached_eof(edge_connection_t *conn); -int connection_edge_process_inbuf(edge_connection_t *conn, - int package_partial); -int connection_edge_destroy(circid_t circ_id, edge_connection_t *conn); -int connection_edge_end(edge_connection_t *conn, uint8_t reason); -int connection_edge_end_errno(edge_connection_t *conn); -int connection_edge_finished_flushing(edge_connection_t *conn); -int connection_edge_finished_connecting(edge_connection_t *conn); - -int connection_ap_handshake_send_begin(edge_connection_t *ap_conn); -int connection_ap_handshake_send_resolve(edge_connection_t *ap_conn); - -edge_connection_t *connection_ap_make_link(char *address, uint16_t port, - const char *digest, - int use_begindir, int want_onehop); -void connection_ap_handshake_socks_reply(edge_connection_t *conn, char *reply, - size_t replylen, - int endreason); -void connection_ap_handshake_socks_resolved(edge_connection_t *conn, - int answer_type, - size_t answer_len, - const char *answer, - int ttl, - time_t expires); - -int connection_exit_begin_conn(cell_t *cell, circuit_t *circ); -int connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ); -void connection_exit_connect(edge_connection_t *conn); -int connection_edge_is_rendezvous_stream(edge_connection_t *conn); -int connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, - int excluded_means_no); -void connection_ap_expire_beginning(void); -void connection_ap_attach_pending(void); -void connection_ap_fail_onehop(const char *failed_digest, - cpath_build_state_t *build_state); -void circuit_discard_optional_exit_enclaves(extend_info_t *info); -int connection_ap_detach_retriable(edge_connection_t *conn, - origin_circuit_t *circ, - int reason); -int connection_ap_process_transparent(edge_connection_t *conn); - -int address_is_invalid_destination(const char *address, int client); - -void addressmap_init(void); -void addressmap_clean(time_t now); -void addressmap_clear_configured(void); -void addressmap_clear_transient(void); -void addressmap_free_all(void); -int addressmap_rewrite(char *address, size_t maxlen, time_t *expires_out); -int addressmap_have_mapping(const char *address, int update_timeout); /** Enumerates possible origins of a client-side address mapping. */ typedef enum { /** We're remapping this address because the controller told us to. */ @@ -3137,31 +3082,6 @@ typedef enum { * Tor server that told us what its value was. */ ADDRMAPSRC_DNS, } addressmap_entry_source_t; -void addressmap_register(const char *address, char *new_address, - time_t expires, addressmap_entry_source_t source); -int parse_virtual_addr_network(const char *val, int validate_only, - char **msg); -int client_dns_incr_failures(const char *address); -void client_dns_clear_failures(const char *address); -void client_dns_set_addressmap(const char *address, uint32_t val, - const char *exitname, int ttl); -const char *addressmap_register_virtual_address(int type, char *new_address); -void addressmap_get_mappings(smartlist_t *sl, time_t min_expires, - time_t max_expires, int want_expiry); -int connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, - origin_circuit_t *circ, - crypt_path_t *cpath); -int hostname_is_noconnect_address(const char *address); - -/** Possible return values for parse_extended_hostname. */ -typedef enum hostname_type_t { - NORMAL_HOSTNAME, ONION_HOSTNAME, EXIT_HOSTNAME, BAD_HOSTNAME -} hostname_type_t; -hostname_type_t parse_extended_hostname(char *address, int allowdotexit); - -#if defined(HAVE_NET_IF_H) && defined(HAVE_NET_PFVAR_H) -int get_pf_socket(void); -#endif /********************************* connection_or.c ***************************/ diff --git a/src/or/relay.c b/src/or/relay.c index 59d7282dc..21de9e9e0 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -17,6 +17,7 @@ #include "circuitlist.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index eb971ac63..3665eb118 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -13,6 +13,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "connection_edge.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/test/test.c b/src/test/test.c index 30bb1a0f7..7e6bf7055 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -46,6 +46,7 @@ double fabs(double x); #include "buffers.h" #include "circuitbuild.h" #include "config.h" +#include "connection_edge.h" #include "geoip.h" #include "rendcommon.h" #include "test.h" -- cgit v1.2.3 From 0d33120c26cc4e9c7705d003e215a53143b41df7 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 10:50:34 +0200 Subject: Create connection_or.h --- src/or/buffers.c | 1 + src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/command.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/connection_or.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/dirserv.c | 1 + src/or/main.c | 1 + src/or/or.h | 45 ------------------------------------ src/or/relay.c | 1 + 12 files changed, 69 insertions(+), 45 deletions(-) create mode 100644 src/or/connection_or.h (limited to 'src/or/relay.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index c9abddcd6..e0e0901b6 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -15,6 +15,7 @@ #include "buffers.h" #include "config.h" #include "connection_edge.h" +#include "connection_or.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 a7b5ee129..d94aa31a0 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -18,6 +18,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index edcd194e6..80c3371ed 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -16,6 +16,7 @@ #include "connection.h" #include "config.h" #include "connection_edge.h" +#include "connection_or.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/command.c b/src/or/command.c index 22f36fff5..76b0d8771 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -20,6 +20,7 @@ #include "circuitlist.h" #include "command.h" #include "connection.h" +#include "connection_or.h" #include "config.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/connection.c b/src/or/connection.c index dc68bcf1a..90f4c55c2 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -18,6 +18,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.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 d4f22fac0..7fe73e1a7 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -16,6 +16,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.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 e8633c10c..1d3dc6878 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -16,6 +16,7 @@ #include "command.h" #include "config.h" #include "connection.h" +#include "connection_or.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/connection_or.h b/src/or/connection_or.h new file mode 100644 index 000000000..8e3723c15 --- /dev/null +++ b/src/or/connection_or.h @@ -0,0 +1,59 @@ +/* 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 connection_or.h + * \brief Header file for connection_or.c. + **/ + +#ifndef _TOR_CONNECTION_OR_H +#define _TOR_CONNECTION_OR_H + +void connection_or_remove_from_identity_map(or_connection_t *conn); +void connection_or_clear_identity_map(void); +or_connection_t *connection_or_get_for_extend(const char *digest, + const tor_addr_t *target_addr, + const char **msg_out, + int *launch_out); +void connection_or_set_bad_connections(void); + +int connection_or_reached_eof(or_connection_t *conn); +int connection_or_process_inbuf(or_connection_t *conn); +int connection_or_flushed_some(or_connection_t *conn); +int connection_or_finished_flushing(or_connection_t *conn); +int connection_or_finished_connecting(or_connection_t *conn); +int connection_or_digest_is_known_relay(const char *id_digest); + +void connection_or_connect_failed(or_connection_t *conn, + int reason, const char *msg); +or_connection_t *connection_or_connect(const tor_addr_t *addr, uint16_t port, + const char *id_digest); + +int connection_tls_start_handshake(or_connection_t *conn, int receiving); +int connection_tls_continue_handshake(or_connection_t *conn); + +void or_handshake_state_free(or_handshake_state_t *state); +int connection_or_set_state_open(or_connection_t *conn); +void connection_or_write_cell_to_buf(const cell_t *cell, + or_connection_t *conn); +void connection_or_write_var_cell_to_buf(const var_cell_t *cell, + or_connection_t *conn); +int connection_or_send_destroy(circid_t circ_id, or_connection_t *conn, + int reason); +int connection_or_send_netinfo(or_connection_t *conn); +int connection_or_send_cert(or_connection_t *conn); +int connection_or_send_link_auth(or_connection_t *conn); +int connection_or_compute_link_auth_hmac(or_connection_t *conn, + char *hmac_out); +int is_or_protocol_version_known(uint16_t version); + +void cell_pack(packed_cell_t *dest, const cell_t *src); +void var_cell_pack_header(const var_cell_t *cell, char *hdr_out); +var_cell_t *var_cell_new(uint16_t payload_len); +void var_cell_free(var_cell_t *cell); + +#endif + diff --git a/src/or/dirserv.c b/src/or/dirserv.c index dc07e802f..4a753af21 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -8,6 +8,7 @@ #include "buffers.h" #include "config.h" #include "connection.h" +#include "connection_or.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 781139749..3b4c73448 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -20,6 +20,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index 31c57000b..236c24bcb 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3083,51 +3083,6 @@ typedef enum { ADDRMAPSRC_DNS, } addressmap_entry_source_t; -/********************************* connection_or.c ***************************/ - -void connection_or_remove_from_identity_map(or_connection_t *conn); -void connection_or_clear_identity_map(void); -or_connection_t *connection_or_get_for_extend(const char *digest, - const tor_addr_t *target_addr, - const char **msg_out, - int *launch_out); -void connection_or_set_bad_connections(void); - -int connection_or_reached_eof(or_connection_t *conn); -int connection_or_process_inbuf(or_connection_t *conn); -int connection_or_flushed_some(or_connection_t *conn); -int connection_or_finished_flushing(or_connection_t *conn); -int connection_or_finished_connecting(or_connection_t *conn); -int connection_or_digest_is_known_relay(const char *id_digest); - -void connection_or_connect_failed(or_connection_t *conn, - int reason, const char *msg); -or_connection_t *connection_or_connect(const tor_addr_t *addr, uint16_t port, - const char *id_digest); - -int connection_tls_start_handshake(or_connection_t *conn, int receiving); -int connection_tls_continue_handshake(or_connection_t *conn); - -void or_handshake_state_free(or_handshake_state_t *state); -int connection_or_set_state_open(or_connection_t *conn); -void connection_or_write_cell_to_buf(const cell_t *cell, - or_connection_t *conn); -void connection_or_write_var_cell_to_buf(const var_cell_t *cell, - or_connection_t *conn); -int connection_or_send_destroy(circid_t circ_id, or_connection_t *conn, - int reason); -int connection_or_send_netinfo(or_connection_t *conn); -int connection_or_send_cert(or_connection_t *conn); -int connection_or_send_link_auth(or_connection_t *conn); -int connection_or_compute_link_auth_hmac(or_connection_t *conn, - char *hmac_out); -int is_or_protocol_version_known(uint16_t version); - -void cell_pack(packed_cell_t *dest, const cell_t *src); -void var_cell_pack_header(const var_cell_t *cell, char *hdr_out); -var_cell_t *var_cell_new(uint16_t payload_len); -void var_cell_free(var_cell_t *cell); - /********************************* control.c ***************************/ /** Used to indicate the type of a circuit event passed to the controller. diff --git a/src/or/relay.c b/src/or/relay.c index 21de9e9e0..b9ba31775 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -18,6 +18,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" -- cgit v1.2.3 From 0bfa34e1f6dd97b9860083101479969a94ee2662 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 11:35:09 +0200 Subject: Create control.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/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/control.c | 1 + src/or/control.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/cpuworker.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dns.c | 1 + src/or/dnsserv.c | 1 + src/or/geoip.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 68 -------------------------------------- src/or/relay.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/test/test_util.c | 1 + 24 files changed, 107 insertions(+), 68 deletions(-) create mode 100644 src/or/control.h (limited to 'src/or/relay.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index e0e0901b6..20e4d2020 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -16,6 +16,7 @@ #include "config.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.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 d94aa31a0..a675d7dad 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -19,6 +19,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 80c3371ed..d2212dc28 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -17,6 +17,7 @@ #include "config.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index d8f1ec76b..07e3d0bc4 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -16,6 +16,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 76b0d8771..e0fedbdc8 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -22,6 +22,7 @@ #include "connection.h" #include "connection_or.h" #include "config.h" +#include "control.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 07e62463e..2a1f2822f 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -17,6 +17,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index 90f4c55c2..ae81ae041 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -19,6 +19,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.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 7fe73e1a7..023c8aeac 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -17,6 +17,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.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 1d3dc6878..213653f1d 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -17,6 +17,7 @@ #include "config.h" #include "connection.h" #include "connection_or.h" +#include "control.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index 97d1b9d2d..77ca08516 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -18,6 +18,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/control.h b/src/or/control.h new file mode 100644 index 000000000..27ef5c37f --- /dev/null +++ b/src/or/control.h @@ -0,0 +1,85 @@ +/* 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 control.h + * \brief Header file for control.c. + **/ + +#ifndef _TOR_CONTROL_H +#define _TOR_CONTROL_H + +void control_update_global_event_mask(void); +void control_adjust_event_log_severity(void); + +/** Log information about the connection conn, protecting it as with + * CONN_LOG_PROTECT. Example: + * + * LOG_FN_CONN(conn, (LOG_DEBUG, "Socket %d wants to write", conn->s)); + **/ +#define LOG_FN_CONN(conn, args) \ + CONN_LOG_PROTECT(conn, log_fn args) + +int connection_control_finished_flushing(control_connection_t *conn); +int connection_control_reached_eof(control_connection_t *conn); +int connection_control_process_inbuf(control_connection_t *conn); + +#define EVENT_AUTHDIR_NEWDESCS 0x000D +#define EVENT_NS 0x000F +int control_event_is_interesting(int event); + +int control_event_circuit_status(origin_circuit_t *circ, + circuit_status_event_t e, int reason); +int control_event_stream_status(edge_connection_t *conn, + stream_status_event_t e, + int reason); +int control_event_or_conn_status(or_connection_t *conn, + or_conn_status_event_t e, int reason); +int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written); +int control_event_stream_bandwidth(edge_connection_t *edge_conn); +int control_event_stream_bandwidth_used(void); +void control_event_logmsg(int severity, unsigned int domain, const char *msg); +int control_event_descriptors_changed(smartlist_t *routers); +int control_event_address_mapped(const char *from, const char *to, + time_t expires, const char *error); +int control_event_or_authdir_new_descriptor(const char *action, + const char *desc, + size_t desclen, + const char *msg); +int control_event_my_descriptor_changed(void); +int control_event_networkstatus_changed(smartlist_t *statuses); + +int control_event_newconsensus(const networkstatus_t *consensus); +int control_event_networkstatus_changed_single(routerstatus_t *rs); +int control_event_general_status(int severity, const char *format, ...) + CHECK_PRINTF(2,3); +int control_event_client_status(int severity, const char *format, ...) + CHECK_PRINTF(2,3); +int control_event_server_status(int severity, const char *format, ...) + CHECK_PRINTF(2,3); +int control_event_guard(const char *nickname, const char *digest, + const char *status); +int control_event_buildtimeout_set(const circuit_build_times_t *cbt, + buildtimeout_set_event_t type); + +int init_cookie_authentication(int enabled); +smartlist_t *decode_hashed_passwords(config_line_t *passwords); +void disable_control_logging(void); +void enable_control_logging(void); + +void control_event_bootstrap(bootstrap_status_t status, int progress); +void control_event_bootstrap_problem(const char *warn, int reason); + +void control_event_clients_seen(const char *controller_str); + +#ifdef CONTROL_PRIVATE +/* Used only by control.c and test.c */ +size_t write_escaped_data(const char *data, size_t len, char **out); +size_t read_escaped_data(const char *data, size_t len, char **out); +#endif + +#endif + diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 9f49e2e36..58257b781 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -18,6 +18,7 @@ #include "circuitlist.h" #include "config.h" #include "connection.h" +#include "cpuworker.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 7d8d7ab4f..5fdae4309 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -9,6 +9,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 4a753af21..80423381e 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -9,6 +9,7 @@ #include "config.h" #include "connection.h" #include "connection_or.h" +#include "control.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dns.c b/src/or/dns.c index 5520a493a..77dc97c8b 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -17,6 +17,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.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 4c471105c..317a0afb2 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -13,6 +13,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "control.h" #ifdef HAVE_EVENT2_DNS_H #include #include diff --git a/src/or/geoip.c b/src/or/geoip.c index 16b3b14ed..eae927522 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -11,6 +11,7 @@ #include "or.h" #include "ht.h" #include "config.h" +#include "control.h" #include "dnsserv.h" #include "geoip.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 3b4c73448..63848639e 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -21,6 +21,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index c73a30bc3..21774976c 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -14,6 +14,7 @@ #include "circuitbuild.h" #include "config.h" #include "connection.h" +#include "control.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index 236c24bcb..91509eab0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3128,9 +3128,6 @@ typedef enum buildtimeout_set_event_t { BUILDTIMEOUT_SET_EVENT_RESUME = 4 } buildtimeout_set_event_t; -void control_update_global_event_mask(void); -void control_adjust_event_log_severity(void); - /** Execute the statement stmt, which may log events concerning the * connection conn. To prevent infinite loops, disable log messages * being sent to controllers if conn is a control connection. @@ -3147,60 +3144,6 @@ void control_adjust_event_log_severity(void); enable_control_logging(); \ STMT_END -/** Log information about the connection conn, protecting it as with - * CONN_LOG_PROTECT. Example: - * - * LOG_FN_CONN(conn, (LOG_DEBUG, "Socket %d wants to write", conn->s)); - **/ -#define LOG_FN_CONN(conn, args) \ - CONN_LOG_PROTECT(conn, log_fn args) - -int connection_control_finished_flushing(control_connection_t *conn); -int connection_control_reached_eof(control_connection_t *conn); -int connection_control_process_inbuf(control_connection_t *conn); - -#define EVENT_AUTHDIR_NEWDESCS 0x000D -#define EVENT_NS 0x000F -int control_event_is_interesting(int event); - -int control_event_circuit_status(origin_circuit_t *circ, - circuit_status_event_t e, int reason); -int control_event_stream_status(edge_connection_t *conn, - stream_status_event_t e, - int reason); -int control_event_or_conn_status(or_connection_t *conn, - or_conn_status_event_t e, int reason); -int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written); -int control_event_stream_bandwidth(edge_connection_t *edge_conn); -int control_event_stream_bandwidth_used(void); -void control_event_logmsg(int severity, unsigned int domain, const char *msg); -int control_event_descriptors_changed(smartlist_t *routers); -int control_event_address_mapped(const char *from, const char *to, - time_t expires, const char *error); -int control_event_or_authdir_new_descriptor(const char *action, - const char *desc, - size_t desclen, - const char *msg); -int control_event_my_descriptor_changed(void); -int control_event_networkstatus_changed(smartlist_t *statuses); -int control_event_newconsensus(const networkstatus_t *consensus); -int control_event_networkstatus_changed_single(routerstatus_t *rs); -int control_event_general_status(int severity, const char *format, ...) - CHECK_PRINTF(2,3); -int control_event_client_status(int severity, const char *format, ...) - CHECK_PRINTF(2,3); -int control_event_server_status(int severity, const char *format, ...) - CHECK_PRINTF(2,3); -int control_event_guard(const char *nickname, const char *digest, - const char *status); -int control_event_buildtimeout_set(const circuit_build_times_t *cbt, - buildtimeout_set_event_t type); - -int init_cookie_authentication(int enabled); -smartlist_t *decode_hashed_passwords(config_line_t *passwords); -void disable_control_logging(void); -void enable_control_logging(void); - /** Enum describing various stages of bootstrapping, for use with controller * bootstrap status events. The values range from 0 to 100. */ typedef enum { @@ -3221,17 +3164,6 @@ typedef enum { BOOTSTRAP_STATUS_DONE=100 } bootstrap_status_t; -void control_event_bootstrap(bootstrap_status_t status, int progress); -void control_event_bootstrap_problem(const char *warn, int reason); - -void control_event_clients_seen(const char *controller_str); - -#ifdef CONTROL_PRIVATE -/* Used only by control.c and test.c */ -size_t write_escaped_data(const char *data, size_t len, char **out); -size_t read_escaped_data(const char *data, size_t len, char **out); -#endif - /********************************* cpuworker.c *****************************/ void cpu_init(void); diff --git a/src/or/relay.c b/src/or/relay.c index b9ba31775..5db5cfde8 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -19,6 +19,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "control.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/router.c b/src/or/router.c index 9cb7ad4f8..722bb4da5 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -11,6 +11,7 @@ #include "circuituse.h" #include "config.h" #include "connection.h" +#include "control.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index df2960065..a28415289 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -15,6 +15,7 @@ #include "circuitbuild.h" #include "config.h" #include "connection.h" +#include "control.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/test/test_util.c b/src/test/test_util.c index fc31d055c..22f2707d7 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -8,6 +8,7 @@ #define MEMPOOL_PRIVATE #include "or.h" #include "config.h" +#include "control.h" #include "test.h" #include "mempool.h" #include "memarea.h" -- cgit v1.2.3 From 0f1548ab18c09efda944def3597bafc2cd9552c8 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 19:58:06 +0200 Subject: Create main.h --- src/or/circuitbuild.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/control.c | 1 + src/or/cpuworker.c | 1 + src/or/directory.c | 1 + src/or/dns.c | 1 + src/or/dnsserv.c | 1 + src/or/hibernate.c | 1 + src/or/main.c | 1 + src/or/main.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/or.h | 53 -------------------------------------- src/or/relay.c | 1 + src/or/rendclient.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + 18 files changed, 83 insertions(+), 53 deletions(-) create mode 100644 src/or/main.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 1a189caab..71eb64379 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -21,6 +21,7 @@ #include "connection_or.h" #include "control.h" #include "directory.h" +#include "main.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/config.c b/src/or/config.c index 68710ee8c..34acc4f8b 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -24,6 +24,7 @@ #include "dns.h" #include "geoip.h" #include "hibernate.h" +#include "main.h" #include "rendclient.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/connection.c b/src/or/connection.c index 51ee9f472..854a53aaf 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -26,6 +26,7 @@ #include "dns.h" #include "dnsserv.h" #include "geoip.h" +#include "main.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 28ed9ad62..5dff47958 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -22,6 +22,7 @@ #include "dnsserv.h" #include "dirserv.h" #include "hibernate.h" +#include "main.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index b3b3cf013..0ddd5f14f 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -20,6 +20,7 @@ #include "control.h" #include "dirserv.h" #include "geoip.h" +#include "main.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index f8a3f20ec..e1073ab43 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -24,6 +24,7 @@ #include "dnsserv.h" #include "geoip.h" #include "hibernate.h" +#include "main.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 58257b781..4ab6d4164 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -19,6 +19,7 @@ #include "config.h" #include "connection.h" #include "cpuworker.h" +#include "main.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 69700e867..8c7bf4fcd 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -14,6 +14,7 @@ #include "dirserv.h" #include "dirvote.h" #include "geoip.h" +#include "main.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/dns.c b/src/or/dns.c index d7184f6e9..7bb2d8ea3 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -19,6 +19,7 @@ #include "connection_edge.h" #include "control.h" #include "dns.h" +#include "main.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 317a0afb2..7f9029424 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -14,6 +14,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "main.h" #ifdef HAVE_EVENT2_DNS_H #include #include diff --git a/src/or/hibernate.c b/src/or/hibernate.c index a30e25ee9..d50d05ed5 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -26,6 +26,7 @@ hibernating, phase 2: #include "connection.h" #include "connection_edge.h" #include "hibernate.h" +#include "main.h" #include "router.h" /** Possible values of hibernate_state */ diff --git a/src/or/main.c b/src/or/main.c index d33072197..ccfd1bc6e 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -30,6 +30,7 @@ #include "dnsserv.h" #include "geoip.h" #include "hibernate.h" +#include "main.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/main.h b/src/or/main.h new file mode 100644 index 000000000..6eeb95449 --- /dev/null +++ b/src/or/main.h @@ -0,0 +1,67 @@ +/* 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 main.h + * \brief Header file for main.c. + **/ + +#ifndef _TOR_MAIN_H +#define _TOR_MAIN_H + +extern int has_completed_circuit; + +int connection_add(connection_t *conn); +int connection_remove(connection_t *conn); +void connection_unregister_events(connection_t *conn); +int connection_in_array(connection_t *conn); +void add_connection_to_closeable_list(connection_t *conn); +int connection_is_on_closeable_list(connection_t *conn); + +smartlist_t *get_connection_array(void); + +typedef enum watchable_events { + READ_EVENT=0x02, + WRITE_EVENT=0x04 +} watchable_events_t; +void connection_watch_events(connection_t *conn, watchable_events_t events); +int connection_is_reading(connection_t *conn); +void connection_stop_reading(connection_t *conn); +void connection_start_reading(connection_t *conn); + +int connection_is_writing(connection_t *conn); +void connection_stop_writing(connection_t *conn); +void connection_start_writing(connection_t *conn); + +void connection_stop_reading_from_linked_conn(connection_t *conn); + +void directory_all_unreachable(time_t now); +void directory_info_has_arrived(time_t now, int from_cache); + +void ip_address_changed(int at_interface); +void dns_servers_relaunch_checks(void); + +void control_signal_act(int the_signal); +void handle_signals(int is_parent); + +int try_locking(or_options_t *options, int err_if_locked); +int have_lockfile(void); +void release_lockfile(void); + +void tor_cleanup(void); +void tor_free_all(int postfork); + +int tor_main(int argc, char *argv[]); + +#ifdef MAIN_PRIVATE +int do_main_loop(void); +int do_list_fingerprint(void); +void do_hash_password(void); +int tor_init(int argc, char **argv); +#endif + +#endif + diff --git a/src/or/or.h b/src/or/or.h index 550331fce..461c55c82 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3268,59 +3268,6 @@ typedef enum { DIRREQ_OR_CONN_BUFFER_FLUSHED = 4 } dirreq_state_t; -/********************************* main.c ***************************/ - -extern int has_completed_circuit; - -int connection_add(connection_t *conn); -int connection_remove(connection_t *conn); -void connection_unregister_events(connection_t *conn); -int connection_in_array(connection_t *conn); -void add_connection_to_closeable_list(connection_t *conn); -int connection_is_on_closeable_list(connection_t *conn); - -smartlist_t *get_connection_array(void); - -typedef enum watchable_events { - READ_EVENT=0x02, - WRITE_EVENT=0x04 -} watchable_events_t; -void connection_watch_events(connection_t *conn, watchable_events_t events); -int connection_is_reading(connection_t *conn); -void connection_stop_reading(connection_t *conn); -void connection_start_reading(connection_t *conn); - -int connection_is_writing(connection_t *conn); -void connection_stop_writing(connection_t *conn); -void connection_start_writing(connection_t *conn); - -void connection_stop_reading_from_linked_conn(connection_t *conn); - -void directory_all_unreachable(time_t now); -void directory_info_has_arrived(time_t now, int from_cache); - -void ip_address_changed(int at_interface); -void dns_servers_relaunch_checks(void); - -void control_signal_act(int the_signal); -void handle_signals(int is_parent); - -int try_locking(or_options_t *options, int err_if_locked); -int have_lockfile(void); -void release_lockfile(void); - -void tor_cleanup(void); -void tor_free_all(int postfork); - -int tor_main(int argc, char *argv[]); - -#ifdef MAIN_PRIVATE -int do_main_loop(void); -int do_list_fingerprint(void); -void do_hash_password(void); -int tor_init(int argc, char **argv); -#endif - /********************************* microdesc.c *************************/ typedef struct microdesc_cache_t microdesc_cache_t; diff --git a/src/or/relay.c b/src/or/relay.c index 5db5cfde8..c362bcbfd 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -21,6 +21,7 @@ #include "connection_or.h" #include "control.h" #include "geoip.h" +#include "main.h" #include "mempool.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 92d43bc18..7f5fcefb5 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -15,6 +15,7 @@ #include "connection.h" #include "connection_edge.h" #include "directory.h" +#include "main.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/router.c b/src/or/router.c index e4ffc2f21..c9501d04e 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -17,6 +17,7 @@ #include "dns.h" #include "geoip.h" #include "hibernate.h" +#include "main.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 0e42acfee..a84ccb853 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -21,6 +21,7 @@ #include "dirvote.h" #include "geoip.h" #include "hibernate.h" +#include "main.h" #include "rendcommon.h" #include "rendservice.h" #include "router.h" -- cgit v1.2.3 From 69fcbbaa8932f83ca715d0cf40c69340c90001a1 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 20:18:55 +0200 Subject: Create networkstatus.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/config.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/main.c | 1 + src/or/networkstatus.c | 1 + src/or/networkstatus.h | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ src/or/or.h | 85 ----------------------------------------- src/or/relay.c | 1 + src/or/rendservice.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test_dir.c | 1 + 17 files changed, 116 insertions(+), 85 deletions(-) create mode 100644 src/or/networkstatus.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 71eb64379..5b360807d 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -22,6 +22,7 @@ #include "control.h" #include "directory.h" #include "main.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index d2212dc28..b8c273766 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -18,6 +18,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "networkstatus.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 34acc4f8b..bfec2f41b 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -25,6 +25,7 @@ #include "geoip.h" #include "hibernate.h" #include "main.h" +#include "networkstatus.h" #include "rendclient.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 0ddd5f14f..8ec52901c 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -21,6 +21,7 @@ #include "dirserv.h" #include "geoip.h" #include "main.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index e1073ab43..5f5e45fd8 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -25,6 +25,7 @@ #include "geoip.h" #include "hibernate.h" #include "main.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index 8c7bf4fcd..057961da8 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -15,6 +15,7 @@ #include "dirvote.h" #include "geoip.h" #include "main.h" +#include "networkstatus.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 5f2c78917..d23542cf6 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -15,6 +15,7 @@ #include "dirvote.h" #include "hibernate.h" #include "microdesc.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 394029812..5b53267ba 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -10,6 +10,7 @@ #include "dirserv.h" #include "dirvote.h" #include "microdesc.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 8e4f35cc0..18525f038 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -32,6 +32,7 @@ #include "hibernate.h" #include "main.h" #include "microdesc.h" +#include "networkstatus.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 98af3a284..bd986609f 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -18,6 +18,7 @@ #include "directory.h" #include "dirserv.h" #include "dirvote.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h new file mode 100644 index 000000000..4059dead5 --- /dev/null +++ b/src/or/networkstatus.h @@ -0,0 +1,101 @@ +/* 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 networkstatus.h + * \brief Header file for networkstatus.c. + **/ + +#ifndef _TOR_NETWORKSTATUS_H +#define _TOR_NETWORKSTATUS_H + +/** How old do we allow a v2 network-status to get before removing it + * completely? */ +#define MAX_NETWORKSTATUS_AGE (10*24*60*60) + +void networkstatus_reset_warnings(void); +void networkstatus_reset_download_failures(void); +int router_reload_v2_networkstatus(void); +int router_reload_consensus_networkstatus(void); +void routerstatus_free(routerstatus_t *rs); +void networkstatus_v2_free(networkstatus_v2_t *ns); +void networkstatus_vote_free(networkstatus_t *ns); +networkstatus_voter_info_t *networkstatus_get_voter_by_id( + networkstatus_t *vote, + const char *identity); +int networkstatus_check_consensus_signature(networkstatus_t *consensus, + int warn); +int networkstatus_check_document_signature(const networkstatus_t *consensus, + document_signature_t *sig, + const authority_cert_t *cert); +char *networkstatus_get_cache_filename(const char *identity_digest); +int router_set_networkstatus_v2(const char *s, time_t arrived_at, + v2_networkstatus_source_t source, + smartlist_t *requested_fingerprints); +void networkstatus_v2_list_clean(time_t now); +int compare_digest_to_routerstatus_entry(const void *_key, + const void **_member); +routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns, + const char *digest); +routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns, + const char *digest); +int networkstatus_vote_find_entry_idx(networkstatus_t *ns, + const char *digest, int *found_out); +const smartlist_t *networkstatus_get_v2_list(void); +download_status_t *router_get_dl_status_by_descriptor_digest(const char *d); +routerstatus_t *router_get_consensus_status_by_id(const char *digest); +routerstatus_t *router_get_consensus_status_by_descriptor_digest( + const char *digest); +routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname, + int warn_if_unnamed); +const char *networkstatus_get_router_digest_by_nickname(const char *nickname); +int networkstatus_nickname_is_unnamed(const char *nickname); +void networkstatus_consensus_download_failed(int status_code); +void update_consensus_networkstatus_fetch_time(time_t now); +int should_delay_dir_fetches(or_options_t *options); +void update_networkstatus_downloads(time_t now); +void update_certificate_downloads(time_t now); +int consensus_is_waiting_for_certs(void); +networkstatus_v2_t *networkstatus_v2_get_by_digest(const char *digest); +networkstatus_t *networkstatus_get_latest_consensus(void); +networkstatus_t *networkstatus_get_live_consensus(time_t now); +networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now); +#define NSSET_FROM_CACHE 1 +#define NSSET_WAS_WAITING_FOR_CERTS 2 +#define NSSET_DONT_DOWNLOAD_CERTS 4 +#define NSSET_ACCEPT_OBSOLETE 8 +#define NSSET_REQUIRE_FLAVOR 16 +int networkstatus_set_current_consensus(const char *consensus, + const char *flavor, + unsigned flags); +void networkstatus_note_certs_arrived(void); +void routers_update_all_from_networkstatus(time_t now, int dir_version); +void routerstatus_list_update_from_consensus_networkstatus(time_t now); +void routers_update_status_from_consensus_networkstatus(smartlist_t *routers, + int reset_failures); +void signed_descs_update_status_from_consensus_networkstatus( + smartlist_t *descs); + +char *networkstatus_getinfo_helper_single(routerstatus_t *rs); +char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now); +void networkstatus_dump_bridge_status_to_file(time_t now); +int32_t get_net_param_from_list(smartlist_t *net_params, const char *name, + int default_val); +int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name, + int32_t default_val); +int getinfo_helper_networkstatus(control_connection_t *conn, + const char *question, char **answer, + const char **errmsg); +int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight, + int32_t default_val); +const char *networkstatus_get_flavor_name(consensus_flavor_t flav); +int networkstatus_parse_flavor_name(const char *flavname); +void document_signature_free(document_signature_t *sig); +document_signature_t *document_signature_dup(const document_signature_t *sig); +void networkstatus_free_all(void); + +#endif + diff --git a/src/or/or.h b/src/or/or.h index 2b3b38480..4f1eab526 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3274,10 +3274,6 @@ typedef struct microdesc_cache_t microdesc_cache_t; /********************************* networkstatus.c *********************/ -/** How old do we allow a v2 network-status to get before removing it - * completely? */ -#define MAX_NETWORKSTATUS_AGE (10*24*60*60) - /** Location where we found a v2 networkstatus. */ typedef enum { NS_FROM_CACHE, NS_FROM_DIR_BY_FP, NS_FROM_DIR_ALL, NS_GENERATED @@ -3297,87 +3293,6 @@ typedef enum version_status_t { VS_UNKNOWN, /**< We have no idea. */ } version_status_t; -void networkstatus_reset_warnings(void); -void networkstatus_reset_download_failures(void); -int router_reload_v2_networkstatus(void); -int router_reload_consensus_networkstatus(void); -void routerstatus_free(routerstatus_t *rs); -void networkstatus_v2_free(networkstatus_v2_t *ns); -void networkstatus_vote_free(networkstatus_t *ns); -networkstatus_voter_info_t *networkstatus_get_voter_by_id( - networkstatus_t *vote, - const char *identity); -int networkstatus_check_consensus_signature(networkstatus_t *consensus, - int warn); -int networkstatus_check_document_signature(const networkstatus_t *consensus, - document_signature_t *sig, - const authority_cert_t *cert); -char *networkstatus_get_cache_filename(const char *identity_digest); -int router_set_networkstatus_v2(const char *s, time_t arrived_at, - v2_networkstatus_source_t source, - smartlist_t *requested_fingerprints); -void networkstatus_v2_list_clean(time_t now); -int compare_digest_to_routerstatus_entry(const void *_key, - const void **_member); -routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns, - const char *digest); -routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns, - const char *digest); -int networkstatus_vote_find_entry_idx(networkstatus_t *ns, - const char *digest, int *found_out); -const smartlist_t *networkstatus_get_v2_list(void); -download_status_t *router_get_dl_status_by_descriptor_digest(const char *d); -routerstatus_t *router_get_consensus_status_by_id(const char *digest); -routerstatus_t *router_get_consensus_status_by_descriptor_digest( - const char *digest); -routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname, - int warn_if_unnamed); -const char *networkstatus_get_router_digest_by_nickname(const char *nickname); -int networkstatus_nickname_is_unnamed(const char *nickname); -void networkstatus_consensus_download_failed(int status_code); -void update_consensus_networkstatus_fetch_time(time_t now); -int should_delay_dir_fetches(or_options_t *options); -void update_networkstatus_downloads(time_t now); -void update_certificate_downloads(time_t now); -int consensus_is_waiting_for_certs(void); -networkstatus_v2_t *networkstatus_v2_get_by_digest(const char *digest); -networkstatus_t *networkstatus_get_latest_consensus(void); -networkstatus_t *networkstatus_get_live_consensus(time_t now); -networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now); -#define NSSET_FROM_CACHE 1 -#define NSSET_WAS_WAITING_FOR_CERTS 2 -#define NSSET_DONT_DOWNLOAD_CERTS 4 -#define NSSET_ACCEPT_OBSOLETE 8 -#define NSSET_REQUIRE_FLAVOR 16 -int networkstatus_set_current_consensus(const char *consensus, - const char *flavor, - unsigned flags); -void networkstatus_note_certs_arrived(void); -void routers_update_all_from_networkstatus(time_t now, int dir_version); -void routerstatus_list_update_from_consensus_networkstatus(time_t now); -void routers_update_status_from_consensus_networkstatus(smartlist_t *routers, - int reset_failures); -void signed_descs_update_status_from_consensus_networkstatus( - smartlist_t *descs); - -char *networkstatus_getinfo_helper_single(routerstatus_t *rs); -char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now); -void networkstatus_dump_bridge_status_to_file(time_t now); -int32_t get_net_param_from_list(smartlist_t *net_params, const char *name, - int default_val); -int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name, - int32_t default_val); -int getinfo_helper_networkstatus(control_connection_t *conn, - const char *question, char **answer, - const char **errmsg); -int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight, - int32_t default_val); -const char *networkstatus_get_flavor_name(consensus_flavor_t flav); -int networkstatus_parse_flavor_name(const char *flavname); -void document_signature_free(document_signature_t *sig); -document_signature_t *document_signature_dup(const document_signature_t *sig); -void networkstatus_free_all(void); - /********************************* ntmain.c ***************************/ #ifdef MS_WINDOWS #if !defined (WINCE) diff --git a/src/or/relay.c b/src/or/relay.c index c362bcbfd..83f875428 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -23,6 +23,7 @@ #include "geoip.h" #include "main.h" #include "mempool.h" +#include "networkstatus.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 5d72ef8c0..0324102d9 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -13,6 +13,7 @@ #include "circuituse.h" #include "config.h" #include "directory.h" +#include "networkstatus.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index a84ccb853..f189943a1 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -22,6 +22,7 @@ #include "geoip.h" #include "hibernate.h" #include "main.h" +#include "networkstatus.h" #include "rendcommon.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index c3b6ffbb3..a7df1f5e0 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -18,6 +18,7 @@ #include "routerlist.h" #include "memarea.h" #include "microdesc.h" +#include "networkstatus.h" #undef log #include diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 206ee4807..628dac7cf 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -11,6 +11,7 @@ #include "directory.h" #include "dirserv.h" #include "dirvote.h" +#include "networkstatus.h" #include "router.h" #include "routerlist.h" #include "test.h" -- cgit v1.2.3 From 7bd8dee46371063cd1e62661cd65ce9a35e776e5 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 20:51:25 +0200 Subject: Create policies.h --- src/or/circuitbuild.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/control.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/main.c | 1 + src/or/or.h | 44 ----------------------------------- src/or/policies.c | 1 + src/or/policies.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/relay.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test.c | 1 + 20 files changed, 78 insertions(+), 44 deletions(-) create mode 100644 src/or/policies.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 00c9026fa..a70effe40 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -24,6 +24,7 @@ #include "main.h" #include "networkstatus.h" #include "onion.h" +#include "policies.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 07e3d0bc4..b13e558d0 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -17,6 +17,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "policies.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/config.c b/src/or/config.c index bfec2f41b..02d20129f 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -26,6 +26,7 @@ #include "hibernate.h" #include "main.h" #include "networkstatus.h" +#include "policies.h" #include "rendclient.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/connection.c b/src/or/connection.c index 854a53aaf..e4d158afb 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -27,6 +27,7 @@ #include "dnsserv.h" #include "geoip.h" #include "main.h" +#include "policies.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 5dff47958..ebc9ec584 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -23,6 +23,7 @@ #include "dirserv.h" #include "hibernate.h" #include "main.h" +#include "policies.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/control.c b/src/or/control.c index 5f5e45fd8..185304813 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -26,6 +26,7 @@ #include "hibernate.h" #include "main.h" #include "networkstatus.h" +#include "policies.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index 057961da8..1c13cbd3d 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -16,6 +16,7 @@ #include "geoip.h" #include "main.h" #include "networkstatus.h" +#include "policies.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index d23542cf6..38fc8f161 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -16,6 +16,7 @@ #include "hibernate.h" #include "microdesc.h" #include "networkstatus.h" +#include "policies.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 5b53267ba..7873e49e7 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -11,6 +11,7 @@ #include "dirvote.h" #include "microdesc.h" #include "networkstatus.h" +#include "policies.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dns.c b/src/or/dns.c index 7bb2d8ea3..f2d3d435d 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -20,6 +20,7 @@ #include "control.h" #include "dns.h" #include "main.h" +#include "policies.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 7f9029424..e231b655f 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -15,6 +15,7 @@ #include "connection_edge.h" #include "control.h" #include "main.h" +#include "policies.h" #ifdef HAVE_EVENT2_DNS_H #include #include diff --git a/src/or/main.c b/src/or/main.c index b30a77edd..60bea4900 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -35,6 +35,7 @@ #include "networkstatus.h" #include "ntmain.h" #include "onion.h" +#include "policies.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/or.h b/src/or/or.h index 8322cf3d4..2f2c3002b 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3295,11 +3295,6 @@ typedef enum version_status_t { /********************************* policies.c ************************/ -/* (length of "accept 255.255.255.255/255.255.255.255:65535-65535\n" plus a - * NUL.) - */ -#define POLICY_BUF_LEN 52 - /** Outcome of applying an address policy to an address. */ typedef enum { /** The address was accepted */ @@ -3314,45 +3309,6 @@ typedef enum { ADDR_POLICY_PROBABLY_REJECTED=2 } addr_policy_result_t; -int firewall_is_fascist_or(void); -int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port); -int fascist_firewall_allows_or(routerinfo_t *ri); -int fascist_firewall_allows_address_dir(const tor_addr_t *addr, uint16_t port); -int dir_policy_permits_address(const tor_addr_t *addr); -int socks_policy_permits_address(const tor_addr_t *addr); -int authdir_policy_permits_address(uint32_t addr, uint16_t port); -int authdir_policy_valid_address(uint32_t addr, uint16_t port); -int authdir_policy_baddir_address(uint32_t addr, uint16_t port); -int authdir_policy_badexit_address(uint32_t addr, uint16_t port); - -int validate_addr_policies(or_options_t *options, char **msg); -void policy_expand_private(smartlist_t **policy); -int policies_parse_from_options(or_options_t *options); - -addr_policy_t *addr_policy_get_canonical_entry(addr_policy_t *ent); -int cmp_addr_policies(smartlist_t *a, smartlist_t *b); -addr_policy_result_t compare_tor_addr_to_addr_policy(const tor_addr_t *addr, - uint16_t port, const smartlist_t *policy); -addr_policy_result_t compare_addr_to_addr_policy(uint32_t addr, - uint16_t port, const smartlist_t *policy); -int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, - int rejectprivate, const char *local_address, - int add_default_policy); -void policies_set_router_exitpolicy_to_reject_all(routerinfo_t *exitrouter); -int exit_policy_is_general_exit(smartlist_t *policy); -int policy_is_reject_star(const smartlist_t *policy); -int getinfo_helper_policies(control_connection_t *conn, - const char *question, char **answer, - const char **errmsg); -int policy_write_item(char *buf, size_t buflen, addr_policy_t *item, - int format_for_desc); - -void addr_policy_list_free(smartlist_t *p); -void addr_policy_free(addr_policy_t *p); -void policies_free_all(void); - -char *policy_summarize(smartlist_t *policy); - /********************************* reasons.c ***************************/ const char *stream_end_reason_to_control_string(int reason); diff --git a/src/or/policies.c b/src/or/policies.c index 72eb16847..cd6307daa 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -11,6 +11,7 @@ #include "or.h" #include "config.h" #include "dirserv.h" +#include "policies.h" #include "ht.h" /** Policy that addresses for incoming SOCKS connections must match. */ diff --git a/src/or/policies.h b/src/or/policies.h new file mode 100644 index 000000000..b99ee797f --- /dev/null +++ b/src/or/policies.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 policies.h + * \brief Header file for policy.c. + **/ + +#ifndef _TOR_POLICIES_H +#define _TOR_POLICIES_H + +/* (length of "accept 255.255.255.255/255.255.255.255:65535-65535\n" plus a + * NUL.) + */ +#define POLICY_BUF_LEN 52 + +int firewall_is_fascist_or(void); +int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port); +int fascist_firewall_allows_or(routerinfo_t *ri); +int fascist_firewall_allows_address_dir(const tor_addr_t *addr, uint16_t port); +int dir_policy_permits_address(const tor_addr_t *addr); +int socks_policy_permits_address(const tor_addr_t *addr); +int authdir_policy_permits_address(uint32_t addr, uint16_t port); +int authdir_policy_valid_address(uint32_t addr, uint16_t port); +int authdir_policy_baddir_address(uint32_t addr, uint16_t port); +int authdir_policy_badexit_address(uint32_t addr, uint16_t port); + +int validate_addr_policies(or_options_t *options, char **msg); +void policy_expand_private(smartlist_t **policy); +int policies_parse_from_options(or_options_t *options); + +addr_policy_t *addr_policy_get_canonical_entry(addr_policy_t *ent); +int cmp_addr_policies(smartlist_t *a, smartlist_t *b); +addr_policy_result_t compare_tor_addr_to_addr_policy(const tor_addr_t *addr, + uint16_t port, const smartlist_t *policy); +addr_policy_result_t compare_addr_to_addr_policy(uint32_t addr, + uint16_t port, const smartlist_t *policy); +int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, + int rejectprivate, const char *local_address, + int add_default_policy); +void policies_set_router_exitpolicy_to_reject_all(routerinfo_t *exitrouter); +int exit_policy_is_general_exit(smartlist_t *policy); +int policy_is_reject_star(const smartlist_t *policy); +int getinfo_helper_policies(control_connection_t *conn, + const char *question, char **answer, + const char **errmsg); +int policy_write_item(char *buf, size_t buflen, addr_policy_t *item, + int format_for_desc); + +void addr_policy_list_free(smartlist_t *p); +void addr_policy_free(addr_policy_t *p); +void policies_free_all(void); + +char *policy_summarize(smartlist_t *policy); + +#endif + diff --git a/src/or/relay.c b/src/or/relay.c index 83f875428..f0801bf81 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -24,6 +24,7 @@ #include "main.h" #include "mempool.h" #include "networkstatus.h" +#include "policies.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/router.c b/src/or/router.c index c9501d04e..4a1891699 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -18,6 +18,7 @@ #include "geoip.h" #include "hibernate.h" #include "main.h" +#include "policies.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index f189943a1..1fb3dbc40 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -23,6 +23,7 @@ #include "hibernate.h" #include "main.h" #include "networkstatus.h" +#include "policies.h" #include "rendcommon.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index a7df1f5e0..0662fd3a1 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -13,6 +13,7 @@ #include "config.h" #include "dirserv.h" #include "dirvote.h" +#include "policies.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/test/test.c b/src/test/test.c index a1e286819..b5c908a21 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -54,6 +54,7 @@ double fabs(double x); #include "mempool.h" #include "memarea.h" #include "onion.h" +#include "policies.h" #ifdef USE_DMALLOC #include -- cgit v1.2.3 From cc060ea220128e55bbef3990239d20a6bb604d44 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 21:08:30 +0200 Subject: Create reasons.h --- src/or/buffers.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/control.c | 1 + src/or/or.h | 15 --------------- src/or/reasons.c | 1 + src/or/reasons.h | 29 +++++++++++++++++++++++++++++ src/or/relay.c | 1 + 9 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 src/or/reasons.h (limited to 'src/or/relay.c') diff --git a/src/or/buffers.c b/src/or/buffers.c index 20e4d2020..3ba2760bf 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -17,6 +17,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "reasons.h" #include "../common/util.h" #include "../common/torlog.h" #ifdef HAVE_UNISTD_H diff --git a/src/or/connection.c b/src/or/connection.c index e4d158afb..c58eb9c9e 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -28,6 +28,7 @@ #include "geoip.h" #include "main.h" #include "policies.h" +#include "reasons.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index ebc9ec584..bf0fe7b94 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -24,6 +24,7 @@ #include "hibernate.h" #include "main.h" #include "policies.h" +#include "reasons.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 8ec52901c..c4db54342 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -22,6 +22,7 @@ #include "geoip.h" #include "main.h" #include "networkstatus.h" +#include "reasons.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index 185304813..ffcbcfdcd 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -27,6 +27,7 @@ #include "main.h" #include "networkstatus.h" #include "policies.h" +#include "reasons.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index 2f2c3002b..3823e3141 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3309,21 +3309,6 @@ typedef enum { ADDR_POLICY_PROBABLY_REJECTED=2 } addr_policy_result_t; -/********************************* reasons.c ***************************/ - -const char *stream_end_reason_to_control_string(int reason); -const char *stream_end_reason_to_string(int reason); -socks5_reply_status_t stream_end_reason_to_socks5_response(int reason); -uint8_t errno_to_stream_end_reason(int e); - -const char *orconn_end_reason_to_control_string(int r); -int tls_error_to_orconn_end_reason(int e); -int errno_to_orconn_end_reason(int e); - -const char *circuit_end_reason_to_control_string(int reason); -const char *socks4_response_code_to_string(uint8_t code); -const char *socks5_response_code_to_string(uint8_t code); - /********************************* relay.c ***************************/ extern uint64_t stats_n_relay_cells_relayed; diff --git a/src/or/reasons.c b/src/or/reasons.c index 569e25390..2dd5fe946 100644 --- a/src/or/reasons.c +++ b/src/or/reasons.c @@ -10,6 +10,7 @@ #include "or.h" #include "config.h" +#include "reasons.h" /***************************** Edge (stream) reasons **********************/ diff --git a/src/or/reasons.h b/src/or/reasons.h new file mode 100644 index 000000000..08e9c0057 --- /dev/null +++ b/src/or/reasons.h @@ -0,0 +1,29 @@ +/* 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 reasons.h + * \brief Header file for reasons.c + **/ + +#ifndef _TOR_REASONS_H +#define _TOR_REASONS_H + +const char *stream_end_reason_to_control_string(int reason); +const char *stream_end_reason_to_string(int reason); +socks5_reply_status_t stream_end_reason_to_socks5_response(int reason); +uint8_t errno_to_stream_end_reason(int e); + +const char *orconn_end_reason_to_control_string(int r); +int tls_error_to_orconn_end_reason(int e); +int errno_to_orconn_end_reason(int e); + +const char *circuit_end_reason_to_control_string(int reason); +const char *socks4_response_code_to_string(uint8_t code); +const char *socks5_response_code_to_string(uint8_t code); + +#endif + diff --git a/src/or/relay.c b/src/or/relay.c index f0801bf81..9fd75736b 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -25,6 +25,7 @@ #include "mempool.h" #include "networkstatus.h" #include "policies.h" +#include "reasons.h" #include "rendcommon.h" #include "routerlist.h" -- cgit v1.2.3 From b0cd4551abb1105542b366e6cd23cfa2fb1003ce Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 21:53:11 +0200 Subject: Create relay.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.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/connection_or.c | 1 + src/or/dns.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 51 ------------------------------------- src/or/relay.c | 1 + src/or/relay.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/rendclient.c | 1 + src/or/rendmid.c | 1 + src/or/rendservice.c | 1 + src/or/router.c | 1 + 17 files changed, 80 insertions(+), 51 deletions(-) create mode 100644 src/or/relay.h (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index a70effe40..b78845fdd 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -25,6 +25,7 @@ #include "networkstatus.h" #include "onion.h" #include "policies.h" +#include "relay.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 044cdb9c3..df4aec727 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -20,6 +20,7 @@ #include "control.h" #include "networkstatus.h" #include "onion.h" +#include "relay.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/command.c b/src/or/command.c index b3b7c2d37..0460e25c2 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -26,6 +26,7 @@ #include "cpuworker.h" #include "hibernate.h" #include "onion.h" +#include "relay.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 02d20129f..4fdf32e0a 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -27,6 +27,7 @@ #include "main.h" #include "networkstatus.h" #include "policies.h" +#include "relay.h" #include "rendclient.h" #include "rendservice.h" #include "router.h" diff --git a/src/or/connection.c b/src/or/connection.c index c58eb9c9e..d9aa1cf78 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -29,6 +29,7 @@ #include "main.h" #include "policies.h" #include "reasons.h" +#include "relay.h" #include "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index bf0fe7b94..83ba23058 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -25,6 +25,7 @@ #include "main.h" #include "policies.h" #include "reasons.h" +#include "relay.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index c4db54342..bf19503d5 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -23,6 +23,7 @@ #include "main.h" #include "networkstatus.h" #include "reasons.h" +#include "relay.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dns.c b/src/or/dns.c index f2d3d435d..4e319b7d8 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -21,6 +21,7 @@ #include "dns.h" #include "main.h" #include "policies.h" +#include "relay.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 60bea4900..e202a109d 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -36,6 +36,7 @@ #include "ntmain.h" #include "onion.h" #include "policies.h" +#include "relay.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index bd986609f..c763e23a8 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -19,6 +19,7 @@ #include "dirserv.h" #include "dirvote.h" #include "networkstatus.h" +#include "relay.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index 3823e3141..d3539c756 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3309,57 +3309,6 @@ typedef enum { ADDR_POLICY_PROBABLY_REJECTED=2 } addr_policy_result_t; -/********************************* relay.c ***************************/ - -extern uint64_t stats_n_relay_cells_relayed; -extern uint64_t stats_n_relay_cells_delivered; - -int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ, - cell_direction_t cell_direction); - -void relay_header_pack(char *dest, const relay_header_t *src); -void relay_header_unpack(relay_header_t *dest, const char *src); -int relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ, - uint8_t relay_command, const char *payload, - size_t payload_len, crypt_path_t *cpath_layer); -int connection_edge_send_command(edge_connection_t *fromconn, - uint8_t relay_command, const char *payload, - size_t payload_len); -int connection_edge_package_raw_inbuf(edge_connection_t *conn, - int package_partial); -void connection_edge_consider_sending_sendme(edge_connection_t *conn); - -extern uint64_t stats_n_data_cells_packaged; -extern uint64_t stats_n_data_bytes_packaged; -extern uint64_t stats_n_data_cells_received; -extern uint64_t stats_n_data_bytes_received; - -void init_cell_pool(void); -void free_cell_pool(void); -void clean_cell_pool(void); -void dump_cell_pool_usage(int severity); - -void cell_queue_clear(cell_queue_t *queue); -void cell_queue_append(cell_queue_t *queue, packed_cell_t *cell); -void cell_queue_append_packed_copy(cell_queue_t *queue, const cell_t *cell); - -void append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn, - cell_t *cell, cell_direction_t direction); -void connection_or_unlink_all_active_circs(or_connection_t *conn); -int connection_or_flush_from_first_active_circuit(or_connection_t *conn, - int max, time_t now); -void assert_active_circuits_ok(or_connection_t *orconn); -void make_circuit_inactive_on_conn(circuit_t *circ, or_connection_t *conn); -void make_circuit_active_on_conn(circuit_t *circ, or_connection_t *conn); - -int append_address_to_payload(char *payload_out, const tor_addr_t *addr); -const char *decode_address_from_payload(tor_addr_t *addr_out, - const char *payload, - int payload_len); -unsigned cell_ewma_get_tick(void); -void cell_ewma_set_scale_factor(or_options_t *options, - networkstatus_t *consensus); - /********************************* rephist.c ***************************/ void rep_hist_init(void); diff --git a/src/or/relay.c b/src/or/relay.c index 9fd75736b..a40013ab4 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -26,6 +26,7 @@ #include "networkstatus.h" #include "policies.h" #include "reasons.h" +#include "relay.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/relay.h b/src/or/relay.h new file mode 100644 index 000000000..73855a52b --- /dev/null +++ b/src/or/relay.h @@ -0,0 +1,65 @@ +/* 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 relay.h + * \brief Header file for relay.c. + **/ + +#ifndef _TOR_RELAY_H +#define _TOR_RELAY_H + +extern uint64_t stats_n_relay_cells_relayed; +extern uint64_t stats_n_relay_cells_delivered; + +int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ, + cell_direction_t cell_direction); + +void relay_header_pack(char *dest, const relay_header_t *src); +void relay_header_unpack(relay_header_t *dest, const char *src); +int relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ, + uint8_t relay_command, const char *payload, + size_t payload_len, crypt_path_t *cpath_layer); +int connection_edge_send_command(edge_connection_t *fromconn, + uint8_t relay_command, const char *payload, + size_t payload_len); +int connection_edge_package_raw_inbuf(edge_connection_t *conn, + int package_partial); +void connection_edge_consider_sending_sendme(edge_connection_t *conn); + +extern uint64_t stats_n_data_cells_packaged; +extern uint64_t stats_n_data_bytes_packaged; +extern uint64_t stats_n_data_cells_received; +extern uint64_t stats_n_data_bytes_received; + +void init_cell_pool(void); +void free_cell_pool(void); +void clean_cell_pool(void); +void dump_cell_pool_usage(int severity); + +void cell_queue_clear(cell_queue_t *queue); +void cell_queue_append(cell_queue_t *queue, packed_cell_t *cell); +void cell_queue_append_packed_copy(cell_queue_t *queue, const cell_t *cell); + +void append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn, + cell_t *cell, cell_direction_t direction); +void connection_or_unlink_all_active_circs(or_connection_t *conn); +int connection_or_flush_from_first_active_circuit(or_connection_t *conn, + int max, time_t now); +void assert_active_circuits_ok(or_connection_t *orconn); +void make_circuit_inactive_on_conn(circuit_t *circ, or_connection_t *conn); +void make_circuit_active_on_conn(circuit_t *circ, or_connection_t *conn); + +int append_address_to_payload(char *payload_out, const tor_addr_t *addr); +const char *decode_address_from_payload(tor_addr_t *addr_out, + const char *payload, + int payload_len); +unsigned cell_ewma_get_tick(void); +void cell_ewma_set_scale_factor(or_options_t *options, + networkstatus_t *consensus); + +#endif + diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 7f5fcefb5..166d38da8 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -16,6 +16,7 @@ #include "connection_edge.h" #include "directory.h" #include "main.h" +#include "relay.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendmid.c b/src/or/rendmid.c index f99654372..393347b6d 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitlist.h" #include "config.h" +#include "relay.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 0324102d9..2c1c8cfde 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -18,6 +18,7 @@ #include "rendcommon.h" #include "rendservice.h" #include "router.h" +#include "relay.h" #include "routerlist.h" static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, diff --git a/src/or/router.c b/src/or/router.c index 4a1891699..bf4256677 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -19,6 +19,7 @@ #include "hibernate.h" #include "main.h" #include "policies.h" +#include "relay.h" #include "router.h" #include "routerlist.h" -- cgit v1.2.3 From 05072723cb8c14193376964ad5716a962d707770 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 23:23:43 +0200 Subject: Create routerparse.h --- src/or/circuitbuild.c | 1 + src/or/connection.c | 1 + src/or/control.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/main.c | 1 + src/or/microdesc.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 75 -------------------------------------------------- src/or/policies.c | 1 + src/or/relay.c | 1 + src/or/rendcommon.c | 1 + src/or/rendservice.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/or/routerparse.h | 11 ++++---- src/test/test.c | 1 + src/test/test_dir.c | 1 + 20 files changed, 23 insertions(+), 81 deletions(-) (limited to 'src/or/relay.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index fc3dbda13..5bb9d70d5 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -29,6 +29,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" #include "crypto.h" #undef log #include diff --git a/src/or/connection.c b/src/or/connection.c index 02acd97e7..55d2fa814 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -34,6 +34,7 @@ #include "rendcommon.h" #include "rephist.h" #include "router.h" +#include "routerparse.h" static connection_t *connection_create_listener( struct sockaddr *listensockaddr, diff --git a/src/or/control.c b/src/or/control.c index ffcbcfdcd..7cbb1bd1f 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -30,6 +30,7 @@ #include "reasons.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" /** Yield true iff s 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 c1e68bf45..a3e575ac9 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -22,6 +22,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.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 397a0c866..86cd18611 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -20,6 +20,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" /** * \file dirserv.c diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 2448a6a19..fd4d742cc 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -15,6 +15,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" /** * \file dirvote.c diff --git a/src/or/main.c b/src/or/main.c index 92c60e7e8..ff674f386 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -43,6 +43,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" #ifdef USE_DMALLOC #include #include diff --git a/src/or/microdesc.c b/src/or/microdesc.c index ead0f9ffa..f56ccd9ee 100644 --- a/src/or/microdesc.c +++ b/src/or/microdesc.c @@ -4,6 +4,7 @@ #include "or.h" #include "config.h" #include "microdesc.h" +#include "routerparse.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 c763e23a8..a9a9c78b8 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -22,6 +22,7 @@ #include "relay.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" /* For tracking v2 networkstatus documents. Only caches do this now. */ diff --git a/src/or/or.h b/src/or/or.h index f51da60f7..44fdd6977 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3494,80 +3494,5 @@ typedef struct tor_version_t { char git_tag[DIGEST_LEN]; } tor_version_t; -int router_get_router_hash(const char *s, size_t s_len, char *digest); -int router_get_dir_hash(const char *s, char *digest); -int router_get_runningrouters_hash(const char *s, char *digest); -int router_get_networkstatus_v2_hash(const char *s, char *digest); -int router_get_networkstatus_v3_hash(const char *s, char *digest, - digest_algorithm_t algorithm); -int router_get_networkstatus_v3_hashes(const char *s, digests_t *digests); -int router_get_extrainfo_hash(const char *s, char *digest); -int router_append_dirobj_signature(char *buf, size_t buf_len, - const char *digest, - size_t digest_len, - crypto_pk_env_t *private_key); -int router_parse_list_from_string(const char **s, const char *eos, - smartlist_t *dest, - saved_location_t saved_location, - int is_extrainfo, - int allow_annotations, - const char *prepend_annotations); -int router_parse_routerlist_from_directory(const char *s, - routerlist_t **dest, - crypto_pk_env_t *pkey, - int check_version, - int write_to_cache); -int router_parse_runningrouters(const char *str); -int router_parse_directory(const char *str); -routerinfo_t *router_parse_entry_from_string(const char *s, const char *end, - int cache_copy, - int allow_annotations, - const char *prepend_annotations); -extrainfo_t *extrainfo_parse_entry_from_string(const char *s, const char *end, - int cache_copy, struct digest_ri_map_t *routermap); -addr_policy_t *router_parse_addr_policy_item_from_string(const char *s, - int assume_action); -version_status_t tor_version_is_obsolete(const char *myversion, - const char *versionlist); -int tor_version_parse(const char *s, tor_version_t *out); -int tor_version_as_new_as(const char *platform, const char *cutoff); -int tor_version_compare(tor_version_t *a, tor_version_t *b); -void sort_version_list(smartlist_t *lst, int remove_duplicates); -void assert_addr_policy_ok(smartlist_t *t); -void dump_distinct_digest_count(int severity); - -int compare_routerstatus_entries(const void **_a, const void **_b); -networkstatus_v2_t *networkstatus_v2_parse_from_string(const char *s); -int networkstatus_verify_bw_weights(networkstatus_t *ns); -networkstatus_t *networkstatus_parse_vote_from_string(const char *s, - const char **eos_out, - networkstatus_type_t ns_type); -ns_detached_signatures_t *networkstatus_parse_detached_signatures( - const char *s, const char *eos); - -smartlist_t *microdescs_parse_from_string(const char *s, const char *eos, - int allow_annotations, - int copy_body); - -authority_cert_t *authority_cert_parse_from_string(const char *s, - const char **end_of_string); -int rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out, - char *desc_id_out, - char **intro_points_encrypted_out, - size_t *intro_points_encrypted_size_out, - size_t *encoded_size_out, - const char **next_out, const char *desc); -int rend_decrypt_introduction_points(char **ipos_decrypted, - size_t *ipos_decrypted_size, - const char *descriptor_cookie, - const char *ipos_encrypted, - size_t ipos_encrypted_size); -int rend_parse_introduction_points(rend_service_descriptor_t *parsed, - const char *intro_points_encoded, - size_t intro_points_encoded_size); -int rend_parse_client_keys(strmap_t *parsed_clients, const char *str); - -void tor_gettimeofday_cache_clear(void); - #endif diff --git a/src/or/policies.c b/src/or/policies.c index cd6307daa..db3c6d886 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -12,6 +12,7 @@ #include "config.h" #include "dirserv.h" #include "policies.h" +#include "routerparse.h" #include "ht.h" /** Policy that addresses for incoming SOCKS connections must match. */ diff --git a/src/or/relay.c b/src/or/relay.c index a40013ab4..22ecdaafa 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -29,6 +29,7 @@ #include "relay.h" #include "rendcommon.h" #include "routerlist.h" +#include "routerparse.h" static int relay_crypt(circuit_t *circ, cell_t *cell, cell_direction_t cell_direction, diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index 8a4de3cca..ec6680b1e 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -17,6 +17,7 @@ #include "rendservice.h" #include "rephist.h" #include "routerlist.h" +#include "routerparse.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 f7ab60dbf..b0d791529 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -21,6 +21,7 @@ #include "relay.h" #include "rephist.h" #include "routerlist.h" +#include "routerparse.h" static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest); diff --git a/src/or/router.c b/src/or/router.c index 36e2d2608..978078bf7 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -23,6 +23,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" /** * \file router.c diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 7f47e7128..146040ac6 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -29,6 +29,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" // #define DEBUG_ROUTERLIST diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 88fbdbf6c..96749e5a7 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -21,6 +21,7 @@ #include "microdesc.h" #include "networkstatus.h" #include "rephist.h" +#include "routerparse.h" #undef log #include diff --git a/src/or/routerparse.h b/src/or/routerparse.h index e61563646..e246dbe9c 100644 --- a/src/or/routerparse.h +++ b/src/or/routerparse.h @@ -5,14 +5,12 @@ /* See LICENSE for licensing information */ /** - * \file geoip.h - * \brief Header file for geoip functions + * \file routerpase.h + * \brief Header file for router information parsing. **/ -#ifndef _TOR_GEOIP_H -#define _TOR_GEOIP_H - -#define MAX_STATUS_TAG_LEN 32 +#ifndef _TOR_ROUTERPARSE_H +#define _TOR_ROUTERPARSE_H int router_get_router_hash(const char *s, size_t s_len, char *digest); int router_get_dir_hash(const char *s, char *digest); @@ -91,3 +89,4 @@ int rend_parse_client_keys(strmap_t *parsed_clients, const char *str); void tor_gettimeofday_cache_clear(void); #endif + diff --git a/src/test/test.c b/src/test/test.c index 8bb694dba..755d1233f 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -56,6 +56,7 @@ double fabs(double x); #include "onion.h" #include "policies.h" #include "rephist.h" +#include "routerparse.h" #ifdef USE_DMALLOC #include diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 628dac7cf..a129bf977 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -14,6 +14,7 @@ #include "networkstatus.h" #include "router.h" #include "routerlist.h" +#include "routerparse.h" #include "test.h" static void -- cgit v1.2.3