From e69dc22f4ed323ed4e4c1537c48b70ca0007773a Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Wed, 21 Jul 2010 12:26:18 +0200 Subject: Split headers for dnsserv.c functions out of or.h The next series of commits begins addressing the issue that we're currently including the complete or.h file in all of our source files. To change that, we're splitting function definitions into new header files (one header file per source file). --- src/or/connection.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/or/connection.c') diff --git a/src/or/connection.c b/src/or/connection.c index 7b1493bfc..82764ec4c 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "dnsserv.h" static connection_t *connection_create_listener( struct sockaddr *listensockaddr, -- cgit v1.2.3 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/config.c | 1 + src/or/connection.c | 1 + src/or/connection_or.c | 1 + src/or/control.c | 1 + src/or/directory.c | 2 ++ src/or/geoip.c | 1 + src/or/geoip.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/or/main.c | 1 + src/or/or.h | 39 --------------------------------- src/or/relay.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/test/test.c | 1 + 13 files changed, 70 insertions(+), 39 deletions(-) create mode 100644 src/or/geoip.h (limited to 'src/or/connection.c') diff --git a/src/or/config.c b/src/or/config.c index 70a3ee621..89032d67b 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -12,6 +12,7 @@ #define CONFIG_PRIVATE #include "or.h" +#include "geoip.h" #ifdef MS_WINDOWS #include #endif diff --git a/src/or/connection.c b/src/or/connection.c index 82764ec4c..e0b1907a0 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -12,6 +12,7 @@ #include "or.h" #include "dnsserv.h" +#include "geoip.h" static connection_t *connection_create_listener( struct sockaddr *listensockaddr, diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 247cc4e59..8e9992c86 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "geoip.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 68921663e..f01be85b7 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -12,6 +12,7 @@ #include "or.h" #include "dnsserv.h" +#include "geoip.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 52e1c392c..90a6fd128 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -4,6 +4,8 @@ /* See LICENSE for licensing information */ #include "or.h" +#include "geoip.h" + #if defined(EXPORTMALLINFO) && defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) #ifndef OPENBSD #include diff --git a/src/or/geoip.c b/src/or/geoip.c index 248c68ea4..f027f3299 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -11,6 +11,7 @@ #include "or.h" #include "ht.h" #include "dnsserv.h" +#include "geoip.h" static void clear_geoip_db(void); diff --git a/src/or/geoip.h b/src/or/geoip.h new file mode 100644 index 000000000..c3a4fbcdf --- /dev/null +++ b/src/or/geoip.h @@ -0,0 +1,58 @@ +/* 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 geoip.c. + **/ + +#ifndef _TOR_GEOIP_H +#define _TOR_GEOIP_H + +#ifdef GEOIP_PRIVATE +int geoip_parse_entry(const char *line); +#endif +int should_record_bridge_info(or_options_t *options); +int geoip_load_file(const char *filename, or_options_t *options); +int geoip_get_country_by_ip(uint32_t ipaddr); +int geoip_get_n_countries(void); +const char *geoip_get_country_name(country_t num); +int geoip_is_loaded(void); +country_t geoip_get_country(const char *countrycode); + +void geoip_note_client_seen(geoip_client_action_t action, + uint32_t addr, time_t now); +void geoip_remove_old_clients(time_t cutoff); + +void geoip_note_ns_response(geoip_client_action_t action, + geoip_ns_response_t response); +time_t geoip_get_history_start(void); +char *geoip_get_client_history_dirreq(time_t now, + geoip_client_action_t action); +char *geoip_get_client_history_bridge(time_t now, + geoip_client_action_t action); +char *geoip_get_request_history(time_t now, geoip_client_action_t action); +int getinfo_helper_geoip(control_connection_t *control_conn, + const char *question, char **answer, + const char **errmsg); +void geoip_free_all(void); + +void geoip_start_dirreq(uint64_t dirreq_id, size_t response_size, + geoip_client_action_t action, dirreq_type_t type); +void geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type, + dirreq_state_t new_state); + +void geoip_dirreq_stats_init(time_t now); +void geoip_dirreq_stats_write(time_t now); +void geoip_entry_stats_init(time_t now); +void geoip_entry_stats_write(time_t now); +void geoip_bridge_stats_init(time_t now); +time_t geoip_bridge_stats_write(time_t now); +const char *geoip_get_bridge_stats_extrainfo(time_t); +const char *geoip_get_bridge_stats_controller(time_t); + +#endif + diff --git a/src/or/main.c b/src/or/main.c index 521d2c2ca..41385447a 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -13,6 +13,7 @@ #define MAIN_PRIVATE #include "or.h" #include "dnsserv.h" +#include "geoip.h" #ifdef USE_DMALLOC #include #include diff --git a/src/or/or.h b/src/or/or.h index 10165d493..ecb04d885 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4103,16 +4103,6 @@ void dump_dns_mem_usage(int severity); * we are willing to talk about it? */ #define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60) -#ifdef GEOIP_PRIVATE -int geoip_parse_entry(const char *line); -#endif -int should_record_bridge_info(or_options_t *options); -int geoip_load_file(const char *filename, or_options_t *options); -int geoip_get_country_by_ip(uint32_t ipaddr); -int geoip_get_n_countries(void); -const char *geoip_get_country_name(country_t num); -int geoip_is_loaded(void); -country_t geoip_get_country(const char *countrycode); /** Indicates an action that we might be noting geoip statistics on. * Note that if we're noticing CONNECT, we're a bridge, and if we're noticing * the others, we're not. @@ -4125,9 +4115,6 @@ typedef enum { /** We've served a v2 networkstatus consensus as a directory server. */ GEOIP_CLIENT_NETWORKSTATUS_V2 = 2, } geoip_client_action_t; -void geoip_note_client_seen(geoip_client_action_t action, - uint32_t addr, time_t now); -void geoip_remove_old_clients(time_t cutoff); /** Indicates either a positive reply or a reason for rejectng a network * status request that will be included in geoip statistics. */ typedef enum { @@ -4146,18 +4133,6 @@ typedef enum { GEOIP_REJECT_BUSY = 5, } geoip_ns_response_t; #define GEOIP_NS_RESPONSE_NUM 6 -void geoip_note_ns_response(geoip_client_action_t action, - geoip_ns_response_t response); -time_t geoip_get_history_start(void); -char *geoip_get_client_history_dirreq(time_t now, - geoip_client_action_t action); -char *geoip_get_client_history_bridge(time_t now, - geoip_client_action_t action); -char *geoip_get_request_history(time_t now, geoip_client_action_t action); -int getinfo_helper_geoip(control_connection_t *control_conn, - const char *question, char **answer, - const char **errmsg); -void geoip_free_all(void); /** Directory requests that we are measuring can be either direct or * tunneled. */ @@ -4188,20 +4163,6 @@ typedef enum { DIRREQ_OR_CONN_BUFFER_FLUSHED = 4 } dirreq_state_t; -void geoip_start_dirreq(uint64_t dirreq_id, size_t response_size, - geoip_client_action_t action, dirreq_type_t type); -void geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type, - dirreq_state_t new_state); - -void geoip_dirreq_stats_init(time_t now); -void geoip_dirreq_stats_write(time_t now); -void geoip_entry_stats_init(time_t now); -void geoip_entry_stats_write(time_t now); -void geoip_bridge_stats_init(time_t now); -time_t geoip_bridge_stats_write(time_t now); -const char *geoip_get_bridge_stats_extrainfo(time_t); -const char *geoip_get_bridge_stats_controller(time_t); - /********************************* hibernate.c **********************/ int accounting_parse_options(or_options_t *options, int validate_only); 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, diff --git a/src/or/router.c b/src/or/router.c index d105aeffa..7d239d602 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -7,6 +7,7 @@ #define ROUTER_PRIVATE #include "or.h" +#include "geoip.h" /** * \file router.c diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 8d403def3..cd5bdcf71 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -12,6 +12,7 @@ **/ #include "or.h" +#include "geoip.h" // #define DEBUG_ROUTERLIST diff --git a/src/test/test.c b/src/test/test.c index a753db27f..b8b26b3d9 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 "geoip.h" #include "test.h" #include "torgzip.h" #include "mempool.h" -- cgit v1.2.3 From c53b6cc8315fac37a05112553476930a21990d97 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Wed, 21 Jul 2010 16:17:10 +0200 Subject: Create router.h --- src/or/circuitbuild.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/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/hibernate.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 81 ----------------------------------------- src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + src/or/router.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test_dir.c | 1 + 24 files changed, 117 insertions(+), 81 deletions(-) create mode 100644 src/or/router.h (limited to 'src/or/connection.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 792260f9a..0a25c034e 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -12,6 +12,7 @@ #define CIRCUIT_PRIVATE #include "or.h" +#include "router.h" #include "crypto.h" #undef log #include diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 50800aec5..7a7cc4d30 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "router.h" /********* START VARIABLES **********/ diff --git a/src/or/command.c b/src/or/command.c index 8d838a0a2..e367dd739 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -16,6 +16,7 @@ */ #include "or.h" +#include "router.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 89032d67b..48fa11eca 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -13,6 +13,7 @@ #include "or.h" #include "geoip.h" +#include "router.h" #ifdef MS_WINDOWS #include #endif diff --git a/src/or/connection.c b/src/or/connection.c index e0b1907a0..c0e4f387b 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 "router.h" static connection_t *connection_create_listener( struct sockaddr *listensockaddr, diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 941f7b7e5..35d01ea56 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -11,6 +11,7 @@ #include "or.h" #include "dnsserv.h" +#include "router.h" #ifdef HAVE_LINUX_TYPES_H #include diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 8e9992c86..e4fe58a2f 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -12,6 +12,7 @@ #include "or.h" #include "geoip.h" +#include "router.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 f01be85b7..59d0a681d 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -13,6 +13,7 @@ #include "or.h" #include "dnsserv.h" #include "geoip.h" +#include "router.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/cpuworker.c b/src/or/cpuworker.c index fde149978..b3514af60 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -13,6 +13,7 @@ **/ #include "or.h" +#include "router.h" /** The maximum number of cpuworker processes we will keep around. */ #define MAX_CPUWORKERS 16 diff --git a/src/or/directory.c b/src/or/directory.c index 90a6fd128..993044416 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -5,6 +5,7 @@ #include "or.h" #include "geoip.h" +#include "router.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 7389425e2..dbff93205 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -5,6 +5,7 @@ #define DIRSERV_PRIVATE #include "or.h" +#include "router.h" /** * \file dirserv.c diff --git a/src/or/dirvote.c b/src/or/dirvote.c index d5610131a..637ad54e0 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -5,6 +5,7 @@ #define DIRVOTE_PRIVATE #include "or.h" +#include "router.h" /** * \file dirvote.c diff --git a/src/or/dns.c b/src/or/dns.c index fa26cf062..8fd5cfa54 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -12,6 +12,7 @@ **/ #include "or.h" +#include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H #include diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 6b512eacf..245c6d4ef 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -22,6 +22,7 @@ hibernating, phase 2: */ #include "or.h" +#include "router.h" /** Possible values of hibernate_state */ typedef enum { diff --git a/src/or/main.c b/src/or/main.c index 41385447a..d21de19f0 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 "router.h" #ifdef USE_DMALLOC #include #include diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 232e02ae0..724730cbd 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -11,6 +11,7 @@ */ #include "or.h" +#include "router.h" /* For tracking v2 networkstatus documents. Only caches do this now. */ diff --git a/src/or/or.h b/src/or/or.h index ecb04d885..5eac3290b 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4769,87 +4769,6 @@ int rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, int rend_mid_rendezvous(or_circuit_t *circ, const char *request, size_t request_len); -/********************************* router.c ***************************/ - -crypto_pk_env_t *get_onion_key(void); -time_t get_onion_key_set_at(void); -void set_identity_key(crypto_pk_env_t *k); -crypto_pk_env_t *get_identity_key(void); -int identity_key_is_set(void); -authority_cert_t *get_my_v3_authority_cert(void); -crypto_pk_env_t *get_my_v3_authority_signing_key(void); -authority_cert_t *get_my_v3_legacy_cert(void); -crypto_pk_env_t *get_my_v3_legacy_signing_key(void); -void dup_onion_keys(crypto_pk_env_t **key, crypto_pk_env_t **last); -void rotate_onion_key(void); -crypto_pk_env_t *init_key_from_file(const char *fname, int generate, - int severity); -void v3_authority_check_key_expiry(void); - -int init_keys(void); - -int check_whether_orport_reachable(void); -int check_whether_dirport_reachable(void); -void consider_testing_reachability(int test_or, int test_dir); -void router_orport_found_reachable(void); -void router_dirport_found_reachable(void); -void router_perform_bandwidth_test(int num_circs, time_t now); - -int authdir_mode(or_options_t *options); -int authdir_mode_v1(or_options_t *options); -int authdir_mode_v2(or_options_t *options); -int authdir_mode_v3(or_options_t *options); -int authdir_mode_any_main(or_options_t *options); -int authdir_mode_any_nonhidserv(or_options_t *options); -int authdir_mode_handles_descs(or_options_t *options, int purpose); -int authdir_mode_publishes_statuses(or_options_t *options); -int authdir_mode_tests_reachability(or_options_t *options); -int authdir_mode_bridge(or_options_t *options); - -int server_mode(or_options_t *options); -int advertised_server_mode(void); -int proxy_mode(or_options_t *options); -void consider_publishable_server(int force); - -void router_upload_dir_desc_to_dirservers(int force); -void mark_my_descriptor_dirty_if_older_than(time_t when); -void mark_my_descriptor_dirty(void); -void check_descriptor_bandwidth_changed(time_t now); -void check_descriptor_ipaddress_changed(time_t now); -void router_new_address_suggestion(const char *suggestion, - const dir_connection_t *d_conn); -int router_compare_to_my_exit_policy(edge_connection_t *conn); -routerinfo_t *router_get_my_routerinfo(void); -extrainfo_t *router_get_my_extrainfo(void); -const char *router_get_my_descriptor(void); -int router_digest_is_me(const char *digest); -int router_extrainfo_digest_is_me(const char *digest); -int router_is_me(routerinfo_t *router); -int router_fingerprint_is_me(const char *fp); -int router_pick_published_address(or_options_t *options, uint32_t *addr); -int router_rebuild_descriptor(int force); -int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, - crypto_pk_env_t *ident_key); -int extrainfo_dump_to_string(char *s, size_t maxlen, extrainfo_t *extrainfo, - crypto_pk_env_t *ident_key); -int is_legal_nickname(const char *s); -int is_legal_nickname_or_hexdigest(const char *s); -int is_legal_hexdigest(const char *s); -void router_get_verbose_nickname(char *buf, const routerinfo_t *router); -void routerstatus_get_verbose_nickname(char *buf, - const routerstatus_t *router); -void router_reset_warnings(void); -void router_reset_reachability(void); -void router_free_all(void); - -const char *router_purpose_to_string(uint8_t p); -uint8_t router_purpose_from_string(const char *s); - -#ifdef ROUTER_PRIVATE -/* Used only by router.c and test.c */ -void get_platform_str(char *platform, size_t len); -#endif - /********************************* routerlist.c ***************************/ /** Represents information about a single trusted directory server. */ diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 7795db0d7..30df64e05 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "router.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 0e55db2d6..00a2cabe2 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "router.h" #include "ht.h" static void bw_arrays_init(void); diff --git a/src/or/router.c b/src/or/router.c index 7d239d602..20316815b 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -8,6 +8,7 @@ #include "or.h" #include "geoip.h" +#include "router.h" /** * \file router.c diff --git a/src/or/router.h b/src/or/router.h new file mode 100644 index 000000000..c8a8506c4 --- /dev/null +++ b/src/or/router.h @@ -0,0 +1,95 @@ +/* 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 router.h + * \brief Header file for router functions + **/ + +#ifndef _TOR_ROUTER_H +#define _TOR_ROUTER_H + +crypto_pk_env_t *get_onion_key(void); +time_t get_onion_key_set_at(void); +void set_identity_key(crypto_pk_env_t *k); +crypto_pk_env_t *get_identity_key(void); +int identity_key_is_set(void); +authority_cert_t *get_my_v3_authority_cert(void); +crypto_pk_env_t *get_my_v3_authority_signing_key(void); +authority_cert_t *get_my_v3_legacy_cert(void); +crypto_pk_env_t *get_my_v3_legacy_signing_key(void); +void dup_onion_keys(crypto_pk_env_t **key, crypto_pk_env_t **last); +void rotate_onion_key(void); +crypto_pk_env_t *init_key_from_file(const char *fname, int generate, + int severity); +void v3_authority_check_key_expiry(void); + +int init_keys(void); + +int check_whether_orport_reachable(void); +int check_whether_dirport_reachable(void); +void consider_testing_reachability(int test_or, int test_dir); +void router_orport_found_reachable(void); +void router_dirport_found_reachable(void); +void router_perform_bandwidth_test(int num_circs, time_t now); + +int authdir_mode(or_options_t *options); +int authdir_mode_v1(or_options_t *options); +int authdir_mode_v2(or_options_t *options); +int authdir_mode_v3(or_options_t *options); +int authdir_mode_any_main(or_options_t *options); +int authdir_mode_any_nonhidserv(or_options_t *options); +int authdir_mode_handles_descs(or_options_t *options, int purpose); +int authdir_mode_publishes_statuses(or_options_t *options); +int authdir_mode_tests_reachability(or_options_t *options); +int authdir_mode_bridge(or_options_t *options); + +int server_mode(or_options_t *options); +int advertised_server_mode(void); +int proxy_mode(or_options_t *options); +void consider_publishable_server(int force); + +void router_upload_dir_desc_to_dirservers(int force); +void mark_my_descriptor_dirty_if_older_than(time_t when); +void mark_my_descriptor_dirty(void); +void check_descriptor_bandwidth_changed(time_t now); +void check_descriptor_ipaddress_changed(time_t now); +void router_new_address_suggestion(const char *suggestion, + const dir_connection_t *d_conn); +int router_compare_to_my_exit_policy(edge_connection_t *conn); +routerinfo_t *router_get_my_routerinfo(void); +extrainfo_t *router_get_my_extrainfo(void); +const char *router_get_my_descriptor(void); +int router_digest_is_me(const char *digest); +int router_extrainfo_digest_is_me(const char *digest); +int router_is_me(routerinfo_t *router); +int router_fingerprint_is_me(const char *fp); +int router_pick_published_address(or_options_t *options, uint32_t *addr); +int router_rebuild_descriptor(int force); +int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, + crypto_pk_env_t *ident_key); +int extrainfo_dump_to_string(char *s, size_t maxlen, extrainfo_t *extrainfo, + crypto_pk_env_t *ident_key); +int is_legal_nickname(const char *s); +int is_legal_nickname_or_hexdigest(const char *s); +int is_legal_hexdigest(const char *s); +void router_get_verbose_nickname(char *buf, const routerinfo_t *router); +void routerstatus_get_verbose_nickname(char *buf, + const routerstatus_t *router); +void router_reset_warnings(void); +void router_reset_reachability(void); +void router_free_all(void); + +const char *router_purpose_to_string(uint8_t p); +uint8_t router_purpose_from_string(const char *s); + +#ifdef ROUTER_PRIVATE +/* Used only by router.c and test.c */ +void get_platform_str(char *platform, size_t len); +#endif + +#endif + diff --git a/src/or/routerlist.c b/src/or/routerlist.c index cd5bdcf71..7d9e48c1d 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -13,6 +13,7 @@ #include "or.h" #include "geoip.h" +#include "router.h" // #define DEBUG_ROUTERLIST diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 293e8c5d9..3da1915cc 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "router.h" #include "memarea.h" #undef log #include diff --git a/src/test/test_dir.c b/src/test/test_dir.c index a746beda2..f99352a9b 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -8,6 +8,7 @@ #define DIRVOTE_PRIVATE #define ROUTER_PRIVATE #include "or.h" +#include "router.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/connection.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 7caa8351b82c764203694dd18a33c17ba1b319e0 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 00:13:51 +0200 Subject: Create rendclient.h --- 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/directory.c | 1 + src/or/main.c | 1 + src/or/or.h | 26 -------------------------- src/or/rendclient.c | 1 + src/or/rendclient.h | 40 ++++++++++++++++++++++++++++++++++++++++ src/or/rendcommon.c | 1 + src/or/rendservice.c | 1 + 12 files changed, 50 insertions(+), 26 deletions(-) create mode 100644 src/or/rendclient.h (limited to 'src/or/connection.c') diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 2de5b4e90..b1272dd7f 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index c76cbd4cc..5621e4fe7 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "rendclient.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 8cd719a75..b4d863700 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -13,6 +13,7 @@ #include "or.h" #include "geoip.h" +#include "rendclient.h" #include "router.h" #include "routerlist.h" #ifdef MS_WINDOWS diff --git a/src/or/connection.c b/src/or/connection.c index 2a3cdab8c..e8b78eab5 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 "rendclient.h" #include "rendcommon.h" #include "router.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index ee271ecb5..4adb250eb 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -11,6 +11,7 @@ #include "or.h" #include "dnsserv.h" +#include "rendclient.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index d81a3db70..d1bb78f20 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -5,6 +5,7 @@ #include "or.h" #include "geoip.h" +#include "rendclient.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 12f1c9eaa..3bc282330 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 "rendclient.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index d1c15e2d1..7c2bf077f 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4612,32 +4612,6 @@ void rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval); void rep_hist_buffer_stats_write(time_t now); -/********************************* rendclient.c ***************************/ - -void rend_client_introcirc_has_opened(origin_circuit_t *circ); -void rend_client_rendcirc_has_opened(origin_circuit_t *circ); -int rend_client_introduction_acked(origin_circuit_t *circ, const char *request, - size_t request_len); -void rend_client_refetch_v2_renddesc(const rend_data_t *rend_query); -int rend_client_remove_intro_point(extend_info_t *failed_intro, - const rend_data_t *rend_query); -int rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, - size_t request_len); -int rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, - size_t request_len); -void rend_client_desc_trynow(const char *query); - -extend_info_t *rend_client_get_random_intro(const rend_data_t *rend_query); - -int rend_client_send_introduction(origin_circuit_t *introcirc, - origin_circuit_t *rendcirc); -int rend_parse_service_authorization(or_options_t *options, - int validate_only); -rend_service_authorization_t *rend_client_lookup_service_authorization( - const char *onion_address); -void rend_service_authorization_free_all(void); -rend_data_t *rend_data_dup(const rend_data_t *request); - /********************************* rendcommon.c ***************************/ /** Hidden-service side configuration of client authorization. */ diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 880182f90..2313dcefd 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendclient.h b/src/or/rendclient.h new file mode 100644 index 000000000..4e6587b85 --- /dev/null +++ b/src/or/rendclient.h @@ -0,0 +1,40 @@ +/* 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 rendclient.h + * \brief Header file for client rend functions + **/ + +#ifndef _TOR_RENDCLIENT_H +#define _TOR_RENDCLIENT_H + +void rend_client_introcirc_has_opened(origin_circuit_t *circ); +void rend_client_rendcirc_has_opened(origin_circuit_t *circ); +int rend_client_introduction_acked(origin_circuit_t *circ, const char *request, + size_t request_len); +void rend_client_refetch_v2_renddesc(const rend_data_t *rend_query); +int rend_client_remove_intro_point(extend_info_t *failed_intro, + const rend_data_t *rend_query); +int rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, + size_t request_len); +int rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, + size_t request_len); +void rend_client_desc_trynow(const char *query); + +extend_info_t *rend_client_get_random_intro(const rend_data_t *rend_query); + +int rend_client_send_introduction(origin_circuit_t *introcirc, + origin_circuit_t *rendcirc); +int rend_parse_service_authorization(or_options_t *options, + int validate_only); +rend_service_authorization_t *rend_client_lookup_service_authorization( + const char *onion_address); +void rend_service_authorization_free_all(void); +rend_data_t *rend_data_dup(const rend_data_t *request); + +#endif + diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index 891973dfc..e4a2d61c3 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -9,6 +9,7 @@ **/ #include "or.h" +#include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index ce37a470c..839d501f2 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "rendclient.h" #include "rendcommon.h" #include "router.h" #include "routerlist.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/connection.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/connection.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/connection.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index a2f7c2c52..ee18dc3b3 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 52b33197a..4e58ddef9 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h new file mode 100644 index 000000000..caca614c8 --- /dev/null +++ b/src/or/circuitlist.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file circuitlist.h + * \brief Header file for circuitlist.c. + **/ + +#ifndef _TOR_CIRCUITLIST_H +#define _TOR_CIRCUITLIST_H + +circuit_t * _circuit_get_global_list(void); +const char *circuit_state_to_string(int state); +const char *circuit_purpose_to_controller_string(uint8_t purpose); +void circuit_dump_by_conn(connection_t *conn, int severity); +void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id, + or_connection_t *conn); +void circuit_set_n_circid_orconn(circuit_t *circ, circid_t id, + or_connection_t *conn); +void circuit_set_state(circuit_t *circ, uint8_t state); +void circuit_close_all_marked(void); +int32_t circuit_initial_package_window(void); +origin_circuit_t *origin_circuit_new(void); +or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn); +circuit_t *circuit_get_by_circid_orconn(circid_t circ_id, + or_connection_t *conn); +int circuit_id_in_use_on_orconn(circid_t circ_id, or_connection_t *conn); +circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); +void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); +origin_circuit_t *circuit_get_by_global_id(uint32_t id); +origin_circuit_t *circuit_get_by_rend_query_and_purpose(const char *rend_query, + uint8_t purpose); +origin_circuit_t *circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, + const char *digest, uint8_t purpose); +or_circuit_t *circuit_get_rendezvous(const char *cookie); +or_circuit_t *circuit_get_intro_point(const char *digest); +origin_circuit_t *circuit_find_to_cannibalize(uint8_t purpose, + extend_info_t *info, int flags); +void circuit_mark_all_unused_circs(void); +void circuit_expire_all_dirty_circs(void); +void _circuit_mark_for_close(circuit_t *circ, int reason, + int line, const char *file); +int circuit_get_cpath_len(origin_circuit_t *circ); +crypt_path_t *circuit_get_cpath_hop(origin_circuit_t *circ, int hopnum); +void circuit_get_all_pending_on_or_conn(smartlist_t *out, + or_connection_t *or_conn); +int circuit_count_pending_on_or_conn(or_connection_t *or_conn); + +#define circuit_mark_for_close(c, reason) \ + _circuit_mark_for_close((c), (reason), __LINE__, _SHORT_FILE_) + +void assert_cpath_layer_ok(const crypt_path_t *cp); +void assert_circuit_ok(const circuit_t *c); +void circuit_free_all(void); + +#endif + diff --git a/src/or/circuituse.c b/src/or/circuituse.c index e4e5d205b..9e1c1860a 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/command.c b/src/or/command.c index 1ca82f7d2..1f084d032 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -17,6 +17,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 9996d1cc5..e9c9cbd69 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index c910c7c5d..1ed3e3d09 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -13,6 +13,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 84752f15b..15cd8bf9b 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -11,6 +11,7 @@ #include "or.h" #include "buffers.h" +#include "circuitlist.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/control.c b/src/or/control.c index ff6d4ce2a..5e9e9a2eb 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -13,6 +13,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 5231f1146..b9c51d4fc 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -15,6 +15,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "router.h" /** The maximum number of cpuworker processes we will keep around. */ diff --git a/src/or/dns.c b/src/or/dns.c index 8fd5cfa54..a40617cc6 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -12,6 +12,7 @@ **/ #include "or.h" +#include "circuitlist.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/main.c b/src/or/main.c index a907ddf8f..97af4f5ae 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/onion.c b/src/or/onion.c index 887087424..2d666475f 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -11,6 +11,7 @@ **/ #include "or.h" +#include "circuitlist.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ diff --git a/src/or/or.h b/src/or/or.h index 7afd7115e..0b09036c1 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3055,52 +3055,6 @@ typedef struct { double close_ms; } circuit_build_times_t; -/********************************* circuitlist.c ***********************/ - -circuit_t * _circuit_get_global_list(void); -const char *circuit_state_to_string(int state); -const char *circuit_purpose_to_controller_string(uint8_t purpose); -void circuit_dump_by_conn(connection_t *conn, int severity); -void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id, - or_connection_t *conn); -void circuit_set_n_circid_orconn(circuit_t *circ, circid_t id, - or_connection_t *conn); -void circuit_set_state(circuit_t *circ, uint8_t state); -void circuit_close_all_marked(void); -int32_t circuit_initial_package_window(void); -origin_circuit_t *origin_circuit_new(void); -or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn); -circuit_t *circuit_get_by_circid_orconn(circid_t circ_id, - or_connection_t *conn); -int circuit_id_in_use_on_orconn(circid_t circ_id, or_connection_t *conn); -circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); -void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); -origin_circuit_t *circuit_get_by_global_id(uint32_t id); -origin_circuit_t *circuit_get_by_rend_query_and_purpose(const char *rend_query, - uint8_t purpose); -origin_circuit_t *circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, - const char *digest, uint8_t purpose); -or_circuit_t *circuit_get_rendezvous(const char *cookie); -or_circuit_t *circuit_get_intro_point(const char *digest); -origin_circuit_t *circuit_find_to_cannibalize(uint8_t purpose, - extend_info_t *info, int flags); -void circuit_mark_all_unused_circs(void); -void circuit_expire_all_dirty_circs(void); -void _circuit_mark_for_close(circuit_t *circ, int reason, - int line, const char *file); -int circuit_get_cpath_len(origin_circuit_t *circ); -crypt_path_t *circuit_get_cpath_hop(origin_circuit_t *circ, int hopnum); -void circuit_get_all_pending_on_or_conn(smartlist_t *out, - or_connection_t *or_conn); -int circuit_count_pending_on_or_conn(or_connection_t *or_conn); - -#define circuit_mark_for_close(c, reason) \ - _circuit_mark_for_close((c), (reason), __LINE__, _SHORT_FILE_) - -void assert_cpath_layer_ok(const crypt_path_t *cp); -void assert_circuit_ok(const circuit_t *c); -void circuit_free_all(void); - /********************************* circuituse.c ************************/ void circuit_expire_building(time_t now); diff --git a/src/or/relay.c b/src/or/relay.c index eab084d8c..87f453dac 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -14,6 +14,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "geoip.h" #include "mempool.h" #include "rendcommon.h" diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 076d353f3..472662e37 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendmid.c b/src/or/rendmid.c index c9f4bf8b7..a248828a0 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "circuitlist.h" /** Respond to an ESTABLISH_INTRO cell by checking the signed data and * setting the circuit's purpose and service pk digest. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 0aa0aac32..a1aa6340f 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -9,6 +9,7 @@ #include "or.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rephist.c b/src/or/rephist.c index 25fda237a..4ece95e49 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -10,6 +10,7 @@ **/ #include "or.h" +#include "circuitlist.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/router.c b/src/or/router.c index 53a4a7db4..12cfc2d9f 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -7,6 +7,7 @@ #define ROUTER_PRIVATE #include "or.h" +#include "circuitlist.h" #include "geoip.h" #include "router.h" #include "routerlist.h" -- cgit v1.2.3 From 01c7b60a8063580fff7ad48adac3d1905df01013 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 10:03:40 +0200 Subject: Create circuituse.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/circuituse.h | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/control.c | 1 + src/or/dns.c | 1 + src/or/main.c | 1 + src/or/or.h | 39 ----------------------------------- src/or/rendclient.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/router.c | 1 + 14 files changed, 65 insertions(+), 39 deletions(-) create mode 100644 src/or/circuituse.h (limited to 'src/or/connection.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index ee18dc3b3..9d54dbec5 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -14,6 +14,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 4e58ddef9..dbbe7bf36 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 9e1c1860a..6ae929e84 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -12,6 +12,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/circuituse.h b/src/or/circuituse.h new file mode 100644 index 000000000..269b6c5f8 --- /dev/null +++ b/src/or/circuituse.h @@ -0,0 +1,53 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file circuituse.h + * \brief Header file for circuituse.c. + **/ + +#ifndef _TOR_CIRCUITUSE_H +#define _TOR_CIRCUITUSE_H + +void circuit_expire_building(time_t now); +void circuit_remove_handled_ports(smartlist_t *needed_ports); +int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, + int min); +int circuit_conforms_to_options(const origin_circuit_t *circ, + const or_options_t *options); +void circuit_build_needed_circs(time_t now); +void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn); + +void circuit_expire_old_circuits_serverside(time_t now); + +void reset_bandwidth_test(void); +int circuit_enough_testing_circs(void); + +void circuit_has_opened(origin_circuit_t *circ); +void circuit_build_failed(origin_circuit_t *circ); + +/** Flag to set when a circuit should have only a single hop. */ +#define CIRCLAUNCH_ONEHOP_TUNNEL (1<<0) +/** Flag to set when a circuit needs to be built of high-uptime nodes */ +#define CIRCLAUNCH_NEED_UPTIME (1<<1) +/** Flag to set when a circuit needs to be built of high-capacity nodes */ +#define CIRCLAUNCH_NEED_CAPACITY (1<<2) +/** Flag to set when the last hop of a circuit doesn't need to be an + * exit node. */ +#define CIRCLAUNCH_IS_INTERNAL (1<<3) +origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose, + extend_info_t *info, + int flags); +origin_circuit_t *circuit_launch_by_router(uint8_t purpose, + routerinfo_t *exit, int flags); +void circuit_reset_failure_count(int timeout); +int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, + origin_circuit_t *circ, + crypt_path_t *cpath); +int connection_ap_handshake_attach_circuit(edge_connection_t *conn); + +#endif + diff --git a/src/or/connection.c b/src/or/connection.c index 1ed3e3d09..255dcccdf 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -14,6 +14,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 15cd8bf9b..311c48161 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -12,6 +12,7 @@ #include "or.h" #include "buffers.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/control.c b/src/or/control.c index 5e9e9a2eb..9c2f4f55d 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -14,6 +14,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/dns.c b/src/or/dns.c index a40617cc6..131304711 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -13,6 +13,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/main.c b/src/or/main.c index 97af4f5ae..d188a5020 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -15,6 +15,7 @@ #include "buffers.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index 0b09036c1..2acc91847 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3055,45 +3055,6 @@ typedef struct { double close_ms; } circuit_build_times_t; -/********************************* circuituse.c ************************/ - -void circuit_expire_building(time_t now); -void circuit_remove_handled_ports(smartlist_t *needed_ports); -int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, - int min); -int circuit_conforms_to_options(const origin_circuit_t *circ, - const or_options_t *options); -void circuit_build_needed_circs(time_t now); -void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn); - -void circuit_expire_old_circuits_serverside(time_t now); - -void reset_bandwidth_test(void); -int circuit_enough_testing_circs(void); - -void circuit_has_opened(origin_circuit_t *circ); -void circuit_build_failed(origin_circuit_t *circ); - -/** Flag to set when a circuit should have only a single hop. */ -#define CIRCLAUNCH_ONEHOP_TUNNEL (1<<0) -/** Flag to set when a circuit needs to be built of high-uptime nodes */ -#define CIRCLAUNCH_NEED_UPTIME (1<<1) -/** Flag to set when a circuit needs to be built of high-capacity nodes */ -#define CIRCLAUNCH_NEED_CAPACITY (1<<2) -/** Flag to set when the last hop of a circuit doesn't need to be an - * exit node. */ -#define CIRCLAUNCH_IS_INTERNAL (1<<3) -origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose, - extend_info_t *info, - int flags); -origin_circuit_t *circuit_launch_by_router(uint8_t purpose, - routerinfo_t *exit, int flags); -void circuit_reset_failure_count(int timeout); -int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, - origin_circuit_t *circ, - crypt_path_t *cpath); -int connection_ap_handshake_attach_circuit(edge_connection_t *conn); - /********************************* command.c ***************************/ void command_process_cell(cell_t *cell, or_connection_t *conn); diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 472662e37..c8e6c0a4f 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index a1aa6340f..fea0b06a1 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -10,6 +10,7 @@ #include "or.h" #include "circuitbuild.h" #include "circuitlist.h" +#include "circuituse.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/rephist.c b/src/or/rephist.c index 4ece95e49..4fa421e51 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -11,6 +11,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/router.c b/src/or/router.c index 12cfc2d9f..a1af88f57 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -8,6 +8,7 @@ #include "or.h" #include "circuitlist.h" +#include "circuituse.h" #include "geoip.h" #include "router.h" #include "routerlist.h" -- cgit v1.2.3 From c4f8f1316e18e5eeb6efc14659a66f3d6feb0adf Mon Sep 17 00:00:00 2001 From: Sebastian Hahn 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/connection.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/connection.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/connection.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/connection.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/connection.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 98d1314c7eb1ef13e298703fa50f0b6b62c35bd3 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 11:40:39 +0200 Subject: Create cpuworker.h --- src/or/command.c | 1 + src/or/config.c | 1 + src/or/connection.c | 1 + src/or/cpuworker.h | 25 +++++++++++++++++++++++++ src/or/main.c | 1 + src/or/or.h | 11 ----------- 6 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 src/or/cpuworker.h (limited to 'src/or/connection.c') diff --git a/src/or/command.c b/src/or/command.c index e0fedbdc8..771dcc4c4 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -23,6 +23,7 @@ #include "connection_or.h" #include "config.h" #include "control.h" +#include "cpuworker.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 2a1f2822f..3f18984f0 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -18,6 +18,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "cpuworker.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index ae81ae041..ac8123cf3 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -20,6 +20,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "cpuworker.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/cpuworker.h b/src/or/cpuworker.h new file mode 100644 index 000000000..e09703f21 --- /dev/null +++ b/src/or/cpuworker.h @@ -0,0 +1,25 @@ +/* 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 cpuworker.h + * \brief Header file for cpuworker.c. + **/ + +#ifndef _TOR_CPUWORKER_H +#define _TOR_CPUWORKER_H + +void cpu_init(void); +void cpuworkers_rotate(void); +int connection_cpu_finished_flushing(connection_t *conn); +int connection_cpu_reached_eof(connection_t *conn); +int connection_cpu_process_inbuf(connection_t *conn); +int assign_onionskin_to_cpuworker(connection_t *cpuworker, + or_circuit_t *circ, + char *onionskin); + +#endif + diff --git a/src/or/main.c b/src/or/main.c index 63848639e..46ab044c3 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -22,6 +22,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "cpuworker.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index 91509eab0..f38567f53 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3164,17 +3164,6 @@ typedef enum { BOOTSTRAP_STATUS_DONE=100 } bootstrap_status_t; -/********************************* cpuworker.c *****************************/ - -void cpu_init(void); -void cpuworkers_rotate(void); -int connection_cpu_finished_flushing(connection_t *conn); -int connection_cpu_reached_eof(connection_t *conn); -int connection_cpu_process_inbuf(connection_t *conn); -int assign_onionskin_to_cpuworker(connection_t *cpuworker, - or_circuit_t *circ, - char *onionskin); - /********************************* directory.c ***************************/ int directories_have_accepted_server_descriptor(void); -- cgit v1.2.3 From bec1c838ca96b69d69b3c275b4703fa539c8c106 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 11:54:50 +0200 Subject: Create directory.h --- src/or/circuitbuild.c | 1 + src/or/connection.c | 1 + src/or/control.c | 1 + src/or/directory.c | 1 + src/or/directory.h | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 90 ----------------------------------------- src/or/rendclient.c | 1 + src/or/rendservice.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/test/test_dir.c | 1 + 15 files changed, 121 insertions(+), 90 deletions(-) create mode 100644 src/or/directory.h (limited to 'src/or/connection.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index a675d7dad..1a189caab 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -20,6 +20,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "directory.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/connection.c b/src/or/connection.c index ac8123cf3..f41578322 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -21,6 +21,7 @@ #include "connection_or.h" #include "control.h" #include "cpuworker.h" +#include "directory.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/control.c b/src/or/control.c index 77ca08516..e90134afc 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -19,6 +19,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "directory.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/directory.c b/src/or/directory.c index 5fdae4309..41b27945d 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -10,6 +10,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "directory.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/directory.h b/src/or/directory.h new file mode 100644 index 000000000..36b4cf2b1 --- /dev/null +++ b/src/or/directory.h @@ -0,0 +1,108 @@ +/* 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 directory.h + * \brief Header file for directory.c. + **/ + +#ifndef _TOR_DIRECTORY_H +#define _TOR_DIRECTORY_H + +int directories_have_accepted_server_descriptor(void); +char *authority_type_to_string(authority_type_t auth); +void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, + authority_type_t type, const char *payload, + size_t payload_len, size_t extrainfo_len); +void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, + const char *resource, + int pds_flags); +void directory_get_from_all_authorities(uint8_t dir_purpose, + uint8_t router_purpose, + const char *resource); +void directory_initiate_command_routerstatus(routerstatus_t *status, + uint8_t dir_purpose, + uint8_t router_purpose, + int anonymized_connection, + const char *resource, + const char *payload, + size_t payload_len, + time_t if_modified_since); +void directory_initiate_command_routerstatus_rend(routerstatus_t *status, + uint8_t dir_purpose, + uint8_t router_purpose, + int anonymized_connection, + const char *resource, + const char *payload, + size_t payload_len, + time_t if_modified_since, + const rend_data_t *rend_query); + +int parse_http_response(const char *headers, int *code, time_t *date, + compress_method_t *compression, char **response); + +int connection_dir_is_encrypted(dir_connection_t *conn); +int connection_dir_reached_eof(dir_connection_t *conn); +int connection_dir_process_inbuf(dir_connection_t *conn); +int connection_dir_finished_flushing(dir_connection_t *conn); +int connection_dir_finished_connecting(dir_connection_t *conn); +void connection_dir_request_failed(dir_connection_t *conn); +void directory_initiate_command(const char *address, const tor_addr_t *addr, + uint16_t or_port, uint16_t dir_port, + int supports_conditional_consensus, + int supports_begindir, const char *digest, + uint8_t dir_purpose, uint8_t router_purpose, + int anonymized_connection, + const char *resource, + const char *payload, size_t payload_len, + time_t if_modified_since); + +#define DSR_HEX (1<<0) +#define DSR_BASE64 (1<<1) +#define DSR_DIGEST256 (1<<2) +#define DSR_SORT_UNIQ (1<<3) +int dir_split_resource_into_fingerprints(const char *resource, + smartlist_t *fp_out, int *compressed_out, + int flags); + +int dir_split_resource_into_fingerprint_pairs(const char *res, + smartlist_t *pairs_out); +char *directory_dump_request_log(void); +void note_request(const char *key, size_t bytes); +int router_supports_extrainfo(const char *identity_digest, int is_authority); + +time_t download_status_increment_failure(download_status_t *dls, + int status_code, const char *item, + int server, time_t now); +/** Increment the failure count of the download_status_t dls, with + * the optional status code sc. */ +#define download_status_failed(dls, sc) \ + download_status_increment_failure((dls), (sc), NULL, \ + get_options()->DirPort, time(NULL)) + +void download_status_reset(download_status_t *dls); +static int download_status_is_ready(download_status_t *dls, time_t now, + int max_failures); +/** Return true iff, as of now, the resource tracked by dls is + * ready to get its download reattempted. */ +static INLINE int +download_status_is_ready(download_status_t *dls, time_t now, + int max_failures) +{ + return (dls->n_download_failures <= max_failures + && dls->next_attempt_at <= now); +} + +static void download_status_mark_impossible(download_status_t *dl); +/** Mark dl as never downloadable. */ +static INLINE void +download_status_mark_impossible(download_status_t *dl) +{ + dl->n_download_failures = IMPOSSIBLE_TO_DOWNLOAD; +} + +#endif + diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 80423381e..5eea9ce1a 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -10,6 +10,7 @@ #include "connection.h" #include "connection_or.h" #include "control.h" +#include "directory.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 6e6bf8d08..f24a91f8e 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -6,6 +6,7 @@ #define DIRVOTE_PRIVATE #include "or.h" #include "config.h" +#include "directory.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 46ab044c3..4bd815a6f 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -23,6 +23,7 @@ #include "connection_or.h" #include "control.h" #include "cpuworker.h" +#include "directory.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 21774976c..799d21f9d 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -15,6 +15,7 @@ #include "config.h" #include "connection.h" #include "control.h" +#include "directory.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index f38567f53..58339b291 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3166,101 +3166,11 @@ typedef enum { /********************************* directory.c ***************************/ -int directories_have_accepted_server_descriptor(void); -char *authority_type_to_string(authority_type_t auth); -void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, - authority_type_t type, const char *payload, - size_t payload_len, size_t extrainfo_len); -void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, - const char *resource, - int pds_flags); -void directory_get_from_all_authorities(uint8_t dir_purpose, - uint8_t router_purpose, - const char *resource); -void directory_initiate_command_routerstatus(routerstatus_t *status, - uint8_t dir_purpose, - uint8_t router_purpose, - int anonymized_connection, - const char *resource, - const char *payload, - size_t payload_len, - time_t if_modified_since); -void directory_initiate_command_routerstatus_rend(routerstatus_t *status, - uint8_t dir_purpose, - uint8_t router_purpose, - int anonymized_connection, - const char *resource, - const char *payload, - size_t payload_len, - time_t if_modified_since, - const rend_data_t *rend_query); - -int parse_http_response(const char *headers, int *code, time_t *date, - compress_method_t *compression, char **response); - -int connection_dir_is_encrypted(dir_connection_t *conn); -int connection_dir_reached_eof(dir_connection_t *conn); -int connection_dir_process_inbuf(dir_connection_t *conn); -int connection_dir_finished_flushing(dir_connection_t *conn); -int connection_dir_finished_connecting(dir_connection_t *conn); -void connection_dir_request_failed(dir_connection_t *conn); -void directory_initiate_command(const char *address, const tor_addr_t *addr, - uint16_t or_port, uint16_t dir_port, - int supports_conditional_consensus, - int supports_begindir, const char *digest, - uint8_t dir_purpose, uint8_t router_purpose, - int anonymized_connection, - const char *resource, - const char *payload, size_t payload_len, - time_t if_modified_since); - -#define DSR_HEX (1<<0) -#define DSR_BASE64 (1<<1) -#define DSR_DIGEST256 (1<<2) -#define DSR_SORT_UNIQ (1<<3) -int dir_split_resource_into_fingerprints(const char *resource, - smartlist_t *fp_out, int *compressed_out, - int flags); /** A pair of digests created by dir_split_resource_info_fingerprint_pairs() */ typedef struct { char first[DIGEST_LEN]; char second[DIGEST_LEN]; } fp_pair_t; -int dir_split_resource_into_fingerprint_pairs(const char *res, - smartlist_t *pairs_out); -char *directory_dump_request_log(void); -void note_request(const char *key, size_t bytes); -int router_supports_extrainfo(const char *identity_digest, int is_authority); - -time_t download_status_increment_failure(download_status_t *dls, - int status_code, const char *item, - int server, time_t now); -/** Increment the failure count of the download_status_t dls, with - * the optional status code sc. */ -#define download_status_failed(dls, sc) \ - download_status_increment_failure((dls), (sc), NULL, \ - get_options()->DirPort, time(NULL)) - -void download_status_reset(download_status_t *dls); -static int download_status_is_ready(download_status_t *dls, time_t now, - int max_failures); -/** Return true iff, as of now, the resource tracked by dls is - * ready to get its download reattempted. */ -static INLINE int -download_status_is_ready(download_status_t *dls, time_t now, - int max_failures) -{ - return (dls->n_download_failures <= max_failures - && dls->next_attempt_at <= now); -} - -static void download_status_mark_impossible(download_status_t *dl); -/** Mark dl as never downloadable. */ -static INLINE void -download_status_mark_impossible(download_status_t *dl) -{ - dl->n_download_failures = IMPOSSIBLE_TO_DOWNLOAD; -} /********************************* dirserv.c ***************************/ /** Maximum length of an exit policy summary. */ diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 3665eb118..92d43bc18 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -14,6 +14,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "directory.h" #include "rendclient.h" #include "rendcommon.h" #include "routerlist.h" diff --git a/src/or/rendservice.c b/src/or/rendservice.c index a7ed2007f..5d72ef8c0 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -12,6 +12,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "directory.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/router.c b/src/or/router.c index 722bb4da5..8dd7ef8dc 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -12,6 +12,7 @@ #include "config.h" #include "connection.h" #include "control.h" +#include "directory.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index a28415289..ca5d75dd7 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -16,6 +16,7 @@ #include "config.h" #include "connection.h" #include "control.h" +#include "directory.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 5ea09d092..e01da1467 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -8,6 +8,7 @@ #define DIRVOTE_PRIVATE #define ROUTER_PRIVATE #include "or.h" +#include "directory.h" #include "router.h" #include "routerlist.h" #include "test.h" -- cgit v1.2.3 From 7d4c027fb064b6163fb4b74fc1b3f86fff1335c9 Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 12:09:49 +0200 Subject: Create dirserv.h --- 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/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirserv.h | 133 +++++++++++++++++++++++++++++++++++++++++++++++ src/or/dirvote.c | 1 + src/or/main.c | 1 + src/or/networkstatus.c | 1 + src/or/or.h | 112 --------------------------------------- src/or/policies.c | 1 + src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/or/routerparse.h | 93 +++++++++++++++++++++++++++++++++ src/test/test_dir.c | 1 + 18 files changed, 241 insertions(+), 112 deletions(-) create mode 100644 src/or/dirserv.h create mode 100644 src/or/routerparse.h (limited to 'src/or/connection.c') diff --git a/src/or/config.c b/src/or/config.c index 3f18984f0..884a059b6 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -19,6 +19,7 @@ #include "connection_edge.h" #include "control.h" #include "cpuworker.h" +#include "dirserv.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index f41578322..522b5ff77 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -22,6 +22,7 @@ #include "control.h" #include "cpuworker.h" #include "directory.h" +#include "dirserv.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 023c8aeac..44c48c6e1 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -19,6 +19,7 @@ #include "connection_or.h" #include "control.h" #include "dnsserv.h" +#include "dirserv.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 213653f1d..b3b3cf013 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -18,6 +18,7 @@ #include "connection.h" #include "connection_or.h" #include "control.h" +#include "dirserv.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/control.c b/src/or/control.c index e90134afc..9ad6dfd47 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -20,6 +20,7 @@ #include "connection_edge.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "dnsserv.h" #include "geoip.h" #include "router.h" diff --git a/src/or/directory.c b/src/or/directory.c index 41b27945d..10d6ae7ce 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -11,6 +11,7 @@ #include "connection_edge.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "geoip.h" #include "rendclient.h" #include "rendcommon.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 5eea9ce1a..0a39b5d2c 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -11,6 +11,7 @@ #include "connection_or.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirserv.h b/src/or/dirserv.h new file mode 100644 index 000000000..fc5a5549c --- /dev/null +++ b/src/or/dirserv.h @@ -0,0 +1,133 @@ +/* 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 dirserv.h + * \brief Header file for dirserv.c. + **/ + +#ifndef _TOR_DIRSERV_H +#define _TOR_DIRSERV_H + +/** Maximum length of an exit policy summary. */ +#define MAX_EXITPOLICY_SUMMARY_LEN 1000 + +/** Maximum allowable length of a version line in a networkstatus. */ +#define MAX_V_LINE_LEN 128 +/** Length of "r Authority BadDirectory BadExit Exit Fast Guard HSDir Named + * Running Stable Unnamed V2Dir Valid\n". */ +#define MAX_FLAG_LINE_LEN 96 +/** Length of "w" line for weighting. Currently at most + * "w Bandwidth= Measured=\n" */ +#define MAX_WEIGHT_LINE_LEN (12+10+10+10+1) +/** Maximum length of an exit policy summary line. */ +#define MAX_POLICY_LINE_LEN (3+MAX_EXITPOLICY_SUMMARY_LEN) +/** Amount of space to allocate for each entry: r, s, and v lines. */ +#define RS_ENTRY_LEN \ + ( /* first line */ \ + MAX_NICKNAME_LEN+BASE64_DIGEST_LEN*2+ISO_TIME_LEN+INET_NTOA_BUF_LEN+ \ + 5*2 /* ports */ + 10 /* punctuation */ + \ + /* second line */ \ + MAX_FLAG_LINE_LEN + \ + /* weight line */ \ + MAX_WEIGHT_LINE_LEN + \ + /* p line. */ \ + MAX_POLICY_LINE_LEN + \ + /* v line. */ \ + MAX_V_LINE_LEN \ + ) + +#define UNNAMED_ROUTER_NICKNAME "Unnamed" + +int connection_dirserv_flushed_some(dir_connection_t *conn); + +int dirserv_add_own_fingerprint(const char *nickname, crypto_pk_env_t *pk); +int dirserv_load_fingerprint_file(void); +void dirserv_free_fingerprint_list(void); +const char *dirserv_get_nickname_by_digest(const char *digest); +enum was_router_added_t dirserv_add_multiple_descriptors( + const char *desc, uint8_t purpose, + const char *source, + const char **msg); +enum was_router_added_t dirserv_add_descriptor(routerinfo_t *ri, + const char **msg, + const char *source); +void dirserv_free_descriptors(void); +void dirserv_set_router_is_running(routerinfo_t *router, time_t now); +int list_server_status_v1(smartlist_t *routers, char **router_status_out, + int for_controller); +int dirserv_dump_directory_to_string(char **dir_out, + crypto_pk_env_t *private_key); + +int directory_fetches_from_authorities(or_options_t *options); +int directory_fetches_dir_info_early(or_options_t *options); +int directory_fetches_dir_info_later(or_options_t *options); +int directory_caches_v2_dir_info(or_options_t *options); +#define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o) +int directory_caches_dir_info(or_options_t *options); +int directory_permits_begindir_requests(or_options_t *options); +int directory_permits_controller_requests(or_options_t *options); +int directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now); + +void directory_set_dirty(void); +cached_dir_t *dirserv_get_directory(void); +cached_dir_t *dirserv_get_runningrouters(void); +cached_dir_t *dirserv_get_consensus(const char *flavor_name); +void dirserv_set_cached_directory(const char *directory, time_t when, + int is_running_routers); +void dirserv_set_cached_networkstatus_v2(const char *directory, + const char *identity, + time_t published); +void dirserv_set_cached_consensus_networkstatus(const char *consensus, + const char *flavor_name, + const digests_t *digests, + time_t published); +void dirserv_clear_old_networkstatuses(time_t cutoff); +void dirserv_clear_old_v1_info(time_t now); +void dirserv_get_networkstatus_v2(smartlist_t *result, const char *key); +void dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result, + const char *key); +int dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, + const char **msg, + int for_unencrypted_conn, + int is_extrainfo); +int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key, + const char **msg); +void dirserv_orconn_tls_done(const char *address, + uint16_t or_port, + const char *digest_rcvd, + int as_advertised); +void dirserv_single_reachability_test(time_t now, routerinfo_t *router); +void dirserv_test_reachability(time_t now); +int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, + int complain); +int dirserv_would_reject_router(routerstatus_t *rs); +int dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff); +int dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src); +int dirserv_have_any_microdesc(const smartlist_t *fps); +size_t dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs, + int compressed); +size_t dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed); + +int routerstatus_format_entry(char *buf, size_t buf_len, + routerstatus_t *rs, const char *platform, + routerstatus_format_type_t format); +void dirserv_free_all(void); +void cached_dir_decref(cached_dir_t *d); +cached_dir_t *new_cached_dir(char *s, time_t published); + +#ifdef DIRSERV_PRIVATE +int measured_bw_line_parse(measured_bw_line_t *out, const char *line); + +int measured_bw_line_apply(measured_bw_line_t *parsed_line, + smartlist_t *routerstatuses); +#endif + +int dirserv_read_measured_bandwidths(const char *from_file, + smartlist_t *routerstatuses); + +#endif + diff --git a/src/or/dirvote.c b/src/or/dirvote.c index f24a91f8e..a013c504e 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -7,6 +7,7 @@ #include "or.h" #include "config.h" #include "directory.h" +#include "dirserv.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index 4bd815a6f..89a8eac16 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -24,6 +24,7 @@ #include "control.h" #include "cpuworker.h" #include "directory.h" +#include "dirserv.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 799d21f9d..96c768704 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -16,6 +16,7 @@ #include "connection.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/or.h b/src/or/or.h index 58339b291..47a0a90ae 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3173,115 +3173,10 @@ typedef struct { } fp_pair_t; /********************************* dirserv.c ***************************/ -/** Maximum length of an exit policy summary. */ -#define MAX_EXITPOLICY_SUMMARY_LEN 1000 - -/** Maximum allowable length of a version line in a networkstatus. */ -#define MAX_V_LINE_LEN 128 -/** Length of "r Authority BadDirectory BadExit Exit Fast Guard HSDir Named - * Running Stable Unnamed V2Dir Valid\n". */ -#define MAX_FLAG_LINE_LEN 96 -/** Length of "w" line for weighting. Currently at most - * "w Bandwidth= Measured=\n" */ -#define MAX_WEIGHT_LINE_LEN (12+10+10+10+1) -/** Maximum length of an exit policy summary line. */ -#define MAX_POLICY_LINE_LEN (3+MAX_EXITPOLICY_SUMMARY_LEN) -/** Amount of space to allocate for each entry: r, s, and v lines. */ -#define RS_ENTRY_LEN \ - ( /* first line */ \ - MAX_NICKNAME_LEN+BASE64_DIGEST_LEN*2+ISO_TIME_LEN+INET_NTOA_BUF_LEN+ \ - 5*2 /* ports */ + 10 /* punctuation */ + \ - /* second line */ \ - MAX_FLAG_LINE_LEN + \ - /* weight line */ \ - MAX_WEIGHT_LINE_LEN + \ - /* p line. */ \ - MAX_POLICY_LINE_LEN + \ - /* v line. */ \ - MAX_V_LINE_LEN \ - ) -#define UNNAMED_ROUTER_NICKNAME "Unnamed" - -int connection_dirserv_flushed_some(dir_connection_t *conn); - -int dirserv_add_own_fingerprint(const char *nickname, crypto_pk_env_t *pk); -int dirserv_load_fingerprint_file(void); -void dirserv_free_fingerprint_list(void); -const char *dirserv_get_nickname_by_digest(const char *digest); -enum was_router_added_t dirserv_add_multiple_descriptors( - const char *desc, uint8_t purpose, - const char *source, - const char **msg); -enum was_router_added_t dirserv_add_descriptor(routerinfo_t *ri, - const char **msg, - const char *source); -void dirserv_free_descriptors(void); -void dirserv_set_router_is_running(routerinfo_t *router, time_t now); -int list_server_status_v1(smartlist_t *routers, char **router_status_out, - int for_controller); -int dirserv_dump_directory_to_string(char **dir_out, - crypto_pk_env_t *private_key); - -int directory_fetches_from_authorities(or_options_t *options); -int directory_fetches_dir_info_early(or_options_t *options); -int directory_fetches_dir_info_later(or_options_t *options); -int directory_caches_v2_dir_info(or_options_t *options); -#define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o) -int directory_caches_dir_info(or_options_t *options); -int directory_permits_begindir_requests(or_options_t *options); -int directory_permits_controller_requests(or_options_t *options); -int directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now); - -void directory_set_dirty(void); -cached_dir_t *dirserv_get_directory(void); -cached_dir_t *dirserv_get_runningrouters(void); -cached_dir_t *dirserv_get_consensus(const char *flavor_name); -void dirserv_set_cached_directory(const char *directory, time_t when, - int is_running_routers); -void dirserv_set_cached_networkstatus_v2(const char *directory, - const char *identity, - time_t published); -void dirserv_set_cached_consensus_networkstatus(const char *consensus, - const char *flavor_name, - const digests_t *digests, - time_t published); -void dirserv_clear_old_networkstatuses(time_t cutoff); -void dirserv_clear_old_v1_info(time_t now); -void dirserv_get_networkstatus_v2(smartlist_t *result, const char *key); -void dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result, - const char *key); -int dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, - const char **msg, - int for_unencrypted_conn, - int is_extrainfo); -int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key, - const char **msg); -void dirserv_orconn_tls_done(const char *address, - uint16_t or_port, - const char *digest_rcvd, - int as_advertised); -void dirserv_single_reachability_test(time_t now, routerinfo_t *router); -void dirserv_test_reachability(time_t now); -int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, - int complain); -int dirserv_would_reject_router(routerstatus_t *rs); -int dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff); -int dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src); -int dirserv_have_any_microdesc(const smartlist_t *fps); -size_t dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs, - int compressed); -size_t dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed); - typedef enum { NS_V2, NS_V3_CONSENSUS, NS_V3_VOTE, NS_CONTROL_PORT, NS_V3_CONSENSUS_MICRODESC } routerstatus_format_type_t; -int routerstatus_format_entry(char *buf, size_t buf_len, - routerstatus_t *rs, const char *platform, - routerstatus_format_type_t format); -void dirserv_free_all(void); -void cached_dir_decref(cached_dir_t *d); -cached_dir_t *new_cached_dir(char *s, time_t published); #ifdef DIRSERV_PRIVATE typedef struct measured_bw_line_t { @@ -3290,15 +3185,8 @@ typedef struct measured_bw_line_t { long int bw; } measured_bw_line_t; -int measured_bw_line_parse(measured_bw_line_t *out, const char *line); - -int measured_bw_line_apply(measured_bw_line_t *parsed_line, - smartlist_t *routerstatuses); #endif -int dirserv_read_measured_bandwidths(const char *from_file, - smartlist_t *routerstatuses); - /********************************* dirvote.c ************************/ /** Lowest allowable value for VoteSeconds. */ diff --git a/src/or/policies.c b/src/or/policies.c index 8866b57c9..72eb16847 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -10,6 +10,7 @@ #include "or.h" #include "config.h" +#include "dirserv.h" #include "ht.h" /** Policy that addresses for incoming SOCKS connections must match. */ diff --git a/src/or/router.c b/src/or/router.c index 8dd7ef8dc..a424bf5d1 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -13,6 +13,7 @@ #include "connection.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "geoip.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index ca5d75dd7..f8c8bad04 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -17,6 +17,7 @@ #include "connection.h" #include "control.h" #include "directory.h" +#include "dirserv.h" #include "geoip.h" #include "rendcommon.h" #include "rendservice.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index b406a1cba..304509c31 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -11,6 +11,7 @@ #include "or.h" #include "config.h" +#include "dirserv.h" #include "rendcommon.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerparse.h b/src/or/routerparse.h new file mode 100644 index 000000000..e61563646 --- /dev/null +++ b/src/or/routerparse.h @@ -0,0 +1,93 @@ +/* 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 geoip functions + **/ + +#ifndef _TOR_GEOIP_H +#define _TOR_GEOIP_H + +#define MAX_STATUS_TAG_LEN 32 + +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/test/test_dir.c b/src/test/test_dir.c index e01da1467..0379811dd 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -9,6 +9,7 @@ #define ROUTER_PRIVATE #include "or.h" #include "directory.h" +#include "dirserv.h" #include "router.h" #include "routerlist.h" #include "test.h" -- cgit v1.2.3 From dc2f1666ff5285823ad6c7e3df59b8022aff936c Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 22 Jul 2010 12:24:25 +0200 Subject: Create dns.h --- src/or/config.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/dns.c | 1 + src/or/dns.h | 31 +++++++++++++++++++++++++++++++ src/or/main.c | 1 + src/or/or.h | 17 ----------------- src/or/router.c | 1 + 8 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 src/or/dns.h (limited to 'src/or/connection.c') diff --git a/src/or/config.c b/src/or/config.c index 70cadaa0a..eed14f2fe 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -21,6 +21,7 @@ #include "cpuworker.h" #include "dirserv.h" #include "dirvote.h" +#include "dns.h" #include "geoip.h" #include "rendclient.h" #include "rendservice.h" diff --git a/src/or/connection.c b/src/or/connection.c index 522b5ff77..51ee9f472 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -23,6 +23,7 @@ #include "cpuworker.h" #include "directory.h" #include "dirserv.h" +#include "dns.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 44c48c6e1..0277b88d1 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -18,6 +18,7 @@ #include "connection_edge.h" #include "connection_or.h" #include "control.h" +#include "dns.h" #include "dnsserv.h" #include "dirserv.h" #include "rendclient.h" diff --git a/src/or/dns.c b/src/or/dns.c index 77dc97c8b..d7184f6e9 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -18,6 +18,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "dns.h" #include "router.h" #include "ht.h" #ifdef HAVE_EVENT2_DNS_H diff --git a/src/or/dns.h b/src/or/dns.h new file mode 100644 index 000000000..c4fd4d1fb --- /dev/null +++ b/src/or/dns.h @@ -0,0 +1,31 @@ +/* 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 dns.h + * \brief Header file for dns.c. + **/ + +#ifndef _TOR_DNS_H +#define _TOR_DNS_H + +int dns_init(void); +int has_dns_init_failed(void); +void dns_free_all(void); +uint32_t dns_clip_ttl(uint32_t ttl); +int dns_reset(void); +void connection_dns_remove(edge_connection_t *conn); +void assert_connection_edge_not_dns_pending(edge_connection_t *conn); +void assert_all_pending_dns_resolves_ok(void); +void dns_cancel_pending_resolve(const char *question); +int dns_resolve(edge_connection_t *exitconn); +void dns_launch_correctness_checks(void); +int dns_seems_to_be_broken(void); +void dns_reset_correctness_checks(void); +void dump_dns_mem_usage(int severity); + +#endif + diff --git a/src/or/main.c b/src/or/main.c index e77359c4d..d42cda27a 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -26,6 +26,7 @@ #include "directory.h" #include "dirserv.h" #include "dirvote.h" +#include "dns.h" #include "dnsserv.h" #include "geoip.h" #include "rendclient.h" diff --git a/src/or/or.h b/src/or/or.h index b56837200..828908e66 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3197,23 +3197,6 @@ typedef struct vote_timing_t { int dist_delay; } vote_timing_t; -/********************************* dns.c ***************************/ - -int dns_init(void); -int has_dns_init_failed(void); -void dns_free_all(void); -uint32_t dns_clip_ttl(uint32_t ttl); -int dns_reset(void); -void connection_dns_remove(edge_connection_t *conn); -void assert_connection_edge_not_dns_pending(edge_connection_t *conn); -void assert_all_pending_dns_resolves_ok(void); -void dns_cancel_pending_resolve(const char *question); -int dns_resolve(edge_connection_t *exitconn); -void dns_launch_correctness_checks(void); -int dns_seems_to_be_broken(void); -void dns_reset_correctness_checks(void); -void dump_dns_mem_usage(int severity); - /********************************* geoip.c **************************/ /** Round all GeoIP results to the next multiple of this value, to avoid diff --git a/src/or/router.c b/src/or/router.c index a424bf5d1..44cffa4a3 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -14,6 +14,7 @@ #include "control.h" #include "directory.h" #include "dirserv.h" +#include "dns.h" #include "geoip.h" #include "router.h" #include "routerlist.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/connection.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 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/connection.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/connection.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/connection.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 df9d42cef56c856db44c22cd3e2eb2a6e2ff1e4c Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Fri, 23 Jul 2010 22:57:20 +0200 Subject: Create rephist.h --- src/or/circuitbuild.c | 1 + src/or/circuitlist.c | 1 + src/or/circuituse.c | 1 + src/or/config.c | 1 + src/or/connection.c | 1 + src/or/connection_edge.c | 1 + src/or/connection_or.c | 1 + src/or/directory.c | 1 + src/or/dirserv.c | 1 + src/or/dirvote.c | 1 + src/or/main.c | 1 + src/or/onion.c | 1 + src/or/or.h | 62 ------------------------------------- src/or/rendclient.c | 1 + src/or/rendcommon.c | 1 + src/or/rendmid.c | 1 + src/or/rendservice.c | 1 + src/or/rephist.c | 1 + src/or/rephist.h | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ src/or/router.c | 1 + src/or/routerlist.c | 1 + src/or/routerparse.c | 1 + src/test/test.c | 1 + 23 files changed, 100 insertions(+), 62 deletions(-) create mode 100644 src/or/rephist.h (limited to 'src/or/connection.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index b78845fdd..fc3dbda13 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -26,6 +26,7 @@ #include "onion.h" #include "policies.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #include "crypto.h" diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index df4aec727..c581365f8 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -23,6 +23,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/circuituse.c b/src/or/circuituse.c index b13e558d0..a3f10a884 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -21,6 +21,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/config.c b/src/or/config.c index 4fdf32e0a..a4e4f89c1 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -30,6 +30,7 @@ #include "relay.h" #include "rendclient.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #ifdef MS_WINDOWS diff --git a/src/or/connection.c b/src/or/connection.c index d9aa1cf78..02acd97e7 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -32,6 +32,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "router.h" static connection_t *connection_create_listener( diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 83ba23058..7522368c5 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -29,6 +29,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index bf19503d5..405df1578 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -24,6 +24,7 @@ #include "networkstatus.h" #include "reasons.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/directory.c b/src/or/directory.c index 1c13cbd3d..c1e68bf45 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -19,6 +19,7 @@ #include "policies.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 38fc8f161..397a0c866 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -17,6 +17,7 @@ #include "microdesc.h" #include "networkstatus.h" #include "policies.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 7873e49e7..2448a6a19 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -12,6 +12,7 @@ #include "microdesc.h" #include "networkstatus.h" #include "policies.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/main.c b/src/or/main.c index e202a109d..92c60e7e8 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -40,6 +40,7 @@ #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #ifdef USE_DMALLOC diff --git a/src/or/onion.c b/src/or/onion.c index 1612d389d..ebc358364 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "config.h" #include "onion.h" +#include "rephist.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ diff --git a/src/or/or.h b/src/or/or.h index 3e7fe2310..f51da60f7 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3311,51 +3311,6 @@ typedef enum { /********************************* rephist.c ***************************/ -void rep_hist_init(void); -void rep_hist_note_connect_failed(const char* nickname, time_t when); -void rep_hist_note_connect_succeeded(const char* nickname, time_t when); -void rep_hist_note_disconnect(const char* nickname, time_t when); -void rep_hist_note_connection_died(const char* nickname, time_t when); -void rep_hist_note_extend_succeeded(const char *from_name, - const char *to_name); -void rep_hist_note_extend_failed(const char *from_name, const char *to_name); -void rep_hist_dump_stats(time_t now, int severity); -void rep_hist_note_bytes_read(size_t num_bytes, time_t when); -void rep_hist_note_bytes_written(size_t num_bytes, time_t when); -void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes); -void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes); -void rep_hist_note_exit_stream_opened(uint16_t port); -void rep_hist_exit_stats_init(time_t now); -void rep_hist_exit_stats_write(time_t now); -int rep_hist_bandwidth_assess(void); -char *rep_hist_get_bandwidth_lines(int for_extrainfo); -void rep_hist_update_state(or_state_t *state); -int rep_hist_load_state(or_state_t *state, char **err); -void rep_history_clean(time_t before); - -void rep_hist_note_router_reachable(const char *id, time_t when); -void rep_hist_note_router_unreachable(const char *id, time_t when); -int rep_hist_record_mtbf_data(time_t now, int missing_means_down); -int rep_hist_load_mtbf_data(time_t now); - -time_t rep_hist_downrate_old_runs(time_t now); -double rep_hist_get_stability(const char *id, time_t when); -double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when); -long rep_hist_get_weighted_time_known(const char *id, time_t when); -int rep_hist_have_measured_enough_stability(void); -const char *rep_hist_get_router_stability_doc(time_t now); - -void rep_hist_note_used_port(time_t now, uint16_t port); -smartlist_t *rep_hist_get_predicted_ports(time_t now); -void rep_hist_note_used_resolve(time_t now); -void rep_hist_note_used_internal(time_t now, int need_uptime, - int need_capacity); -int rep_hist_get_predicted_internal(time_t now, int *need_uptime, - int *need_capacity); - -int any_predicted_circuits(time_t now); -int rep_hist_circbuilding_dormant(time_t now); - /** Possible public/private key operations in Tor: used to keep track of where * we're spending our time. */ typedef enum { @@ -3365,23 +3320,6 @@ typedef enum { TLS_HANDSHAKE_C, TLS_HANDSHAKE_S, REND_CLIENT, REND_MID, REND_SERVER, } pk_op_t; -void note_crypto_pk_op(pk_op_t operation); -void dump_pk_ops(int severity); - -void rep_hist_free_all(void); - -/* for hidden service usage statistics */ -void hs_usage_note_publish_total(const char *service_id, time_t now); -void hs_usage_note_publish_novel(const char *service_id, time_t now); -void hs_usage_note_fetch_total(const char *service_id, time_t now); -void hs_usage_note_fetch_successful(const char *service_id, time_t now); -void hs_usage_write_statistics_to_file(time_t now); -void hs_usage_free_all(void); - -void rep_hist_buffer_stats_init(time_t now); -void rep_hist_buffer_stats_add_circ(circuit_t *circ, - time_t end_of_interval); -void rep_hist_buffer_stats_write(time_t now); /********************************* rendcommon.c ***************************/ diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 166d38da8..0377f121c 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -19,6 +19,7 @@ #include "relay.h" #include "rendclient.h" #include "rendcommon.h" +#include "rephist.h" #include "routerlist.h" /** Called when we've established a circuit to an introduction point: diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index fc43f11bb..8a4de3cca 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -15,6 +15,7 @@ #include "rendcommon.h" #include "rendmid.h" #include "rendservice.h" +#include "rephist.h" #include "routerlist.h" /** Return 0 if one and two are the same service ids, else -1 or 1 */ diff --git a/src/or/rendmid.c b/src/or/rendmid.c index 48cb10f52..d392f8e53 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -12,6 +12,7 @@ #include "config.h" #include "relay.h" #include "rendmid.h" +#include "rephist.h" /** Respond to an ESTABLISH_INTRO cell by checking the signed data and * setting the circuit's purpose and service pk digest. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 2c1c8cfde..f7ab60dbf 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -19,6 +19,7 @@ #include "rendservice.h" #include "router.h" #include "relay.h" +#include "rephist.h" #include "routerlist.h" static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, diff --git a/src/or/rephist.c b/src/or/rephist.c index 88ba83e3e..a419f31e7 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -13,6 +13,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" #include "ht.h" diff --git a/src/or/rephist.h b/src/or/rephist.h new file mode 100644 index 000000000..1720c9a9f --- /dev/null +++ b/src/or/rephist.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file rephist.h + * \brief Header file for rephist functions + **/ + +#ifndef _TOR_REPHIST_H +#define _TOR_REPHIST_H + +void rep_hist_init(void); +void rep_hist_note_connect_failed(const char* nickname, time_t when); +void rep_hist_note_connect_succeeded(const char* nickname, time_t when); +void rep_hist_note_disconnect(const char* nickname, time_t when); +void rep_hist_note_connection_died(const char* nickname, time_t when); +void rep_hist_note_extend_succeeded(const char *from_name, + const char *to_name); +void rep_hist_note_extend_failed(const char *from_name, const char *to_name); +void rep_hist_dump_stats(time_t now, int severity); +void rep_hist_note_bytes_read(size_t num_bytes, time_t when); +void rep_hist_note_bytes_written(size_t num_bytes, time_t when); +void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes); +void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes); +void rep_hist_note_exit_stream_opened(uint16_t port); +void rep_hist_exit_stats_init(time_t now); +void rep_hist_exit_stats_write(time_t now); +int rep_hist_bandwidth_assess(void); +char *rep_hist_get_bandwidth_lines(int for_extrainfo); +void rep_hist_update_state(or_state_t *state); +int rep_hist_load_state(or_state_t *state, char **err); +void rep_history_clean(time_t before); + +void rep_hist_note_router_reachable(const char *id, time_t when); +void rep_hist_note_router_unreachable(const char *id, time_t when); +int rep_hist_record_mtbf_data(time_t now, int missing_means_down); +int rep_hist_load_mtbf_data(time_t now); + +time_t rep_hist_downrate_old_runs(time_t now); +double rep_hist_get_stability(const char *id, time_t when); +double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when); +long rep_hist_get_weighted_time_known(const char *id, time_t when); +int rep_hist_have_measured_enough_stability(void); +const char *rep_hist_get_router_stability_doc(time_t now); + +void rep_hist_note_used_port(time_t now, uint16_t port); +smartlist_t *rep_hist_get_predicted_ports(time_t now); +void rep_hist_note_used_resolve(time_t now); +void rep_hist_note_used_internal(time_t now, int need_uptime, + int need_capacity); +int rep_hist_get_predicted_internal(time_t now, int *need_uptime, + int *need_capacity); + +int any_predicted_circuits(time_t now); +int rep_hist_circbuilding_dormant(time_t now); + +void note_crypto_pk_op(pk_op_t operation); +void dump_pk_ops(int severity); + +void rep_hist_free_all(void); + +/* for hidden service usage statistics */ +void hs_usage_note_publish_total(const char *service_id, time_t now); +void hs_usage_note_publish_novel(const char *service_id, time_t now); +void hs_usage_note_fetch_total(const char *service_id, time_t now); +void hs_usage_note_fetch_successful(const char *service_id, time_t now); +void hs_usage_write_statistics_to_file(time_t now); +void hs_usage_free_all(void); + +void rep_hist_buffer_stats_init(time_t now); +void rep_hist_buffer_stats_add_circ(circuit_t *circ, + time_t end_of_interval); +void rep_hist_buffer_stats_write(time_t now); + +#endif + diff --git a/src/or/router.c b/src/or/router.c index bf4256677..36e2d2608 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -20,6 +20,7 @@ #include "main.h" #include "policies.h" #include "relay.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 1fb3dbc40..7f47e7128 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -26,6 +26,7 @@ #include "policies.h" #include "rendcommon.h" #include "rendservice.h" +#include "rephist.h" #include "router.h" #include "routerlist.h" diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 0662fd3a1..88fbdbf6c 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -20,6 +20,7 @@ #include "memarea.h" #include "microdesc.h" #include "networkstatus.h" +#include "rephist.h" #undef log #include diff --git a/src/test/test.c b/src/test/test.c index b5c908a21..8bb694dba 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -55,6 +55,7 @@ double fabs(double x); #include "memarea.h" #include "onion.h" #include "policies.h" +#include "rephist.h" #ifdef USE_DMALLOC #include -- 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/connection.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