From ff4030f6211033be127dd4f671f34b15998b101a Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Wed, 21 Jul 2010 14:38:52 +0200
Subject: Create geoip.h

---
 src/test/test.c | 1 +
 1 file changed, 1 insertion(+)

(limited to 'src/test')

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 <sebastian@torproject.org>
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/test')

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 <math.h>
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 <shlobj.h>
 #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 <linux/types.h>
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 <b>s</b> 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 <event2/event.h>
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 <dmalloc.h>
 #include <openssl/crypto.h>
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 <math.h>
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 cbee969f407b53d2b453d03460eb2864d0eaf1db Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Wed, 21 Jul 2010 17:08:11 +0200
Subject: Create routerlist.h

---
 src/or/circuitbuild.c    |   1 +
 src/or/circuitlist.c     |   1 +
 src/or/circuituse.c      |   1 +
 src/or/command.c         |   1 +
 src/or/config.c          |   1 +
 src/or/connection_edge.c |   1 +
 src/or/connection_or.c   |   1 +
 src/or/control.c         |   1 +
 src/or/directory.c       |   1 +
 src/or/dirserv.c         |   1 +
 src/or/dirvote.c         |   1 +
 src/or/geoip.c           |   1 +
 src/or/main.c            |   1 +
 src/or/networkstatus.c   |   1 +
 src/or/or.h              | 175 ------------------------------------------
 src/or/relay.c           |   1 +
 src/or/rendclient.c      |   1 +
 src/or/rendcommon.c      |   1 +
 src/or/rendservice.c     |   1 +
 src/or/rephist.c         |   1 +
 src/or/router.c          |   1 +
 src/or/routerlist.c      |   1 +
 src/or/routerlist.h      | 193 +++++++++++++++++++++++++++++++++++++++++++++++
 src/or/routerparse.c     |   1 +
 src/test/test_dir.c      |   1 +
 25 files changed, 216 insertions(+), 175 deletions(-)
 create mode 100644 src/or/routerlist.h

(limited to 'src/test')

diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 0a25c034e..08aa2524f 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -13,6 +13,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 #include "crypto.h"
 #undef log
 #include <math.h>
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index e18e89266..cc33fcb35 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -10,6 +10,7 @@
  **/
 
 #include "or.h"
+#include "routerlist.h"
 #include "ht.h"
 
 /********* START VARIABLES **********/
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 7a7cc4d30..753ae7b78 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -11,6 +11,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 /********* START VARIABLES **********/
 
diff --git a/src/or/command.c b/src/or/command.c
index e367dd739..8ba45a398 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -17,6 +17,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 /** How many CELL_PADDING cells have we received, ever? */
 uint64_t stats_n_padding_cells_processed = 0;
diff --git a/src/or/config.c b/src/or/config.c
index 48fa11eca..8cd719a75 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -14,6 +14,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 #ifdef MS_WINDOWS
 #include <shlobj.h>
 #endif
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 35d01ea56..8c63d516e 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -12,6 +12,7 @@
 #include "or.h"
 #include "dnsserv.h"
 #include "router.h"
+#include "routerlist.h"
 
 #ifdef HAVE_LINUX_TYPES_H
 #include <linux/types.h>
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index e4fe58a2f..b1ed17449 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -13,6 +13,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 
 static int connection_tls_finish_handshake(or_connection_t *conn);
 static int connection_or_process_cells_from_inbuf(or_connection_t *conn);
diff --git a/src/or/control.c b/src/or/control.c
index 59d0a681d..b99451327 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -14,6 +14,7 @@
 #include "dnsserv.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 
 /** Yield true iff <b>s</b> is the state of a control_connection_t that has
  * finished authentication and is accepting commands. */
diff --git a/src/or/directory.c b/src/or/directory.c
index 993044416..1e311697d 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -6,6 +6,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 
 #if defined(EXPORTMALLINFO) && defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
 #ifndef OPENBSD
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index dbff93205..59a8fdc88 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -6,6 +6,7 @@
 #define DIRSERV_PRIVATE
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 /**
  * \file dirserv.c
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 637ad54e0..782e04c1b 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -6,6 +6,7 @@
 #define DIRVOTE_PRIVATE
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 /**
  * \file dirvote.c
diff --git a/src/or/geoip.c b/src/or/geoip.c
index f027f3299..5275c6ec7 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -12,6 +12,7 @@
 #include "ht.h"
 #include "dnsserv.h"
 #include "geoip.h"
+#include "routerlist.h"
 
 static void clear_geoip_db(void);
 
diff --git a/src/or/main.c b/src/or/main.c
index d21de19f0..271d6fe77 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -15,6 +15,7 @@
 #include "dnsserv.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 #ifdef USE_DMALLOC
 #include <dmalloc.h>
 #include <openssl/crypto.h>
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 724730cbd..92a41b964 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -12,6 +12,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 /* For tracking v2 networkstatus documents.  Only caches do this now. */
 
diff --git a/src/or/or.h b/src/or/or.h
index 5eac3290b..e9fd5b1b9 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -4808,21 +4808,6 @@ typedef struct trusted_dir_server_t {
 
 #define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX
 
-int get_n_authorities(authority_type_t type);
-int trusted_dirs_reload_certs(void);
-int trusted_dirs_load_certs_from_string(const char *contents, int from_store,
-                                        int flush);
-void trusted_dirs_flush_certs_to_disk(void);
-authority_cert_t *authority_cert_get_newest_by_id(const char *id_digest);
-authority_cert_t *authority_cert_get_by_sk_digest(const char *sk_digest);
-authority_cert_t *authority_cert_get_by_digests(const char *id_digest,
-                                                const char *sk_digest);
-void authority_cert_get_all(smartlist_t *certs_out);
-void authority_cert_dl_failed(const char *id_digest, int status);
-void authority_certs_fetch_missing(networkstatus_t *status, time_t now);
-int router_reload_router_list(void);
-smartlist_t *router_get_trusted_dir_servers(void);
-
 /* Flags for pick_directory_server and pick_trusteddirserver. */
 /** Flag to indicate that we should not automatically be willing to use
  * ourself to answer a directory request.
@@ -4852,25 +4837,6 @@ smartlist_t *router_get_trusted_dir_servers(void);
  */
 #define PDS_NO_EXISTING_SERVERDESC_FETCH (1<<3)
 #define _PDS_PREFER_TUNNELED_DIR_CONNS (1<<16)
-routerstatus_t *router_pick_directory_server(authority_type_t type, int flags);
-trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d);
-trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d);
-routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags);
-int router_get_my_share_of_directory_requests(double *v2_share_out,
-                                              double *v3_share_out);
-void router_reset_status_download_failures(void);
-void routerlist_add_family(smartlist_t *sl, routerinfo_t *router);
-int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2);
-void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list,
-                                    int must_be_running);
-int router_nickname_is_in_list(routerinfo_t *router, const char *list);
-routerinfo_t *routerlist_find_my_routerinfo(void);
-routerinfo_t *router_find_exact_exit_enclave(const char *address,
-                                             uint16_t port);
-int router_is_unreliable(routerinfo_t *router, int need_uptime,
-                         int need_capacity, int need_guard);
-uint32_t router_get_advertised_bandwidth(routerinfo_t *router);
-uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router);
 
 /** Possible ways to weight routers when choosing one randomly.  See
  * routerlist_sl_choose_by_bandwidth() for more information.*/
@@ -4878,10 +4844,6 @@ typedef enum bandwidth_weight_rule_t {
   NO_WEIGHTING, WEIGHT_FOR_EXIT, WEIGHT_FOR_MID, WEIGHT_FOR_GUARD,
   WEIGHT_FOR_DIR
 } bandwidth_weight_rule_t;
-routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl,
-                                                bandwidth_weight_rule_t rule);
-routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl,
-                                                bandwidth_weight_rule_t rule);
 
 /* XXXX actually declared in reasons.c */
 const char *bandwidth_weight_rule_to_string(enum bandwidth_weight_rule_t rule);
@@ -4897,38 +4859,6 @@ typedef enum {
   CRN_WEIGHT_AS_EXIT = 1<<5
 } router_crn_flags_t;
 
-routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist,
-                                        struct routerset_t *excludedset,
-                                        router_crn_flags_t flags);
-
-routerinfo_t *router_get_by_nickname(const char *nickname,
-                                     int warn_if_unnamed);
-int router_digest_version_as_new_as(const char *digest, const char *cutoff);
-int router_digest_is_trusted_dir_type(const char *digest,
-                                      authority_type_t type);
-#define router_digest_is_trusted_dir(d) \
-  router_digest_is_trusted_dir_type((d), NO_AUTHORITY)
-
-int router_addr_is_trusted_dir(uint32_t addr);
-int hexdigest_to_digest(const char *hexdigest, char *digest);
-routerinfo_t *router_get_by_hexdigest(const char *hexdigest);
-routerinfo_t *router_get_by_digest(const char *digest);
-signed_descriptor_t *router_get_by_descriptor_digest(const char *digest);
-signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest);
-signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest);
-const char *signed_descriptor_get_body(signed_descriptor_t *desc);
-const char *signed_descriptor_get_annotations(signed_descriptor_t *desc);
-routerlist_t *router_get_routerlist(void);
-void routerinfo_free(routerinfo_t *router);
-void extrainfo_free(extrainfo_t *extrainfo);
-void routerlist_free(routerlist_t *rl);
-void dump_routerlist_mem_usage(int severity);
-void routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old,
-                       time_t now);
-void routerlist_free_all(void);
-void routerlist_reset_warnings(void);
-void router_set_status(const char *digest, int up);
-
 /** Return value for router_add_to_routerlist() and dirserv_add_descriptor() */
 typedef enum was_router_added_t {
   ROUTER_ADDED_SUCCESSFULLY = 1,
@@ -4940,111 +4870,6 @@ typedef enum was_router_added_t {
   ROUTER_AUTHDIR_REJECTS = -5,
 } was_router_added_t;
 
-static int WRA_WAS_ADDED(was_router_added_t s);
-static int WRA_WAS_OUTDATED(was_router_added_t s);
-static int WRA_WAS_REJECTED(was_router_added_t s);
-/** Return true iff the descriptor was added. It might still be necessary to
- * check whether the descriptor generator should be notified.
- */
-static INLINE int
-WRA_WAS_ADDED(was_router_added_t s) {
-  return s == ROUTER_ADDED_SUCCESSFULLY || s == ROUTER_ADDED_NOTIFY_GENERATOR;
-}
-/** Return true iff the descriptor was not added because it was either:
- * - not in the consensus
- * - neither in the consensus nor in any networkstatus document
- * - it was outdated.
- */
-static INLINE int WRA_WAS_OUTDATED(was_router_added_t s)
-{
-  return (s == ROUTER_WAS_NOT_NEW ||
-          s == ROUTER_NOT_IN_CONSENSUS ||
-          s == ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS);
-}
-/** Return true iff the descriptor rejected because it was malformed. */
-static INLINE int WRA_WAS_REJECTED(was_router_added_t s)
-{
-  return (s == ROUTER_AUTHDIR_REJECTS);
-}
-was_router_added_t router_add_to_routerlist(routerinfo_t *router,
-                                            const char **msg,
-                                            int from_cache,
-                                            int from_fetch);
-was_router_added_t router_add_extrainfo_to_routerlist(
-                                        extrainfo_t *ei, const char **msg,
-                                        int from_cache, int from_fetch);
-void routerlist_remove_old_routers(void);
-int router_load_single_router(const char *s, uint8_t purpose, int cache,
-                              const char **msg);
-int router_load_routers_from_string(const char *s, const char *eos,
-                                     saved_location_t saved_location,
-                                     smartlist_t *requested_fingerprints,
-                                     int descriptor_digests,
-                                     const char *prepend_annotations);
-void router_load_extrainfo_from_string(const char *s, const char *eos,
-                                       saved_location_t saved_location,
-                                       smartlist_t *requested_fingerprints,
-                                       int descriptor_digests);
-void routerlist_retry_directory_downloads(time_t now);
-int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port,
-                                          int need_uptime);
-int router_exit_policy_rejects_all(routerinfo_t *router);
-trusted_dir_server_t *add_trusted_dir_server(const char *nickname,
-                           const char *address,
-                           uint16_t dir_port, uint16_t or_port,
-                           const char *digest, const char *v3_auth_digest,
-                           authority_type_t type);
-void authority_cert_free(authority_cert_t *cert);
-void clear_trusted_dir_servers(void);
-int any_trusted_dir_is_v1_authority(void);
-void update_consensus_router_descriptor_downloads(time_t now, int is_vote,
-                                                  networkstatus_t *consensus);
-void update_router_descriptor_downloads(time_t now);
-void update_extrainfo_downloads(time_t now);
-int router_have_minimum_dir_info(void);
-void router_dir_info_changed(void);
-const char *get_dir_info_status_string(void);
-int count_loading_descriptors_progress(void);
-void router_reset_descriptor_download_failures(void);
-int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2);
-int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
-                                           signed_descriptor_t *sd,
-                                           const char **msg);
-void routerlist_assert_ok(routerlist_t *rl);
-const char *esc_router_info(routerinfo_t *router);
-void routers_sort_by_identity(smartlist_t *routers);
-
-routerset_t *routerset_new(void);
-int routerset_parse(routerset_t *target, const char *s,
-                    const char *description);
-void routerset_union(routerset_t *target, const routerset_t *source);
-int routerset_is_list(const routerset_t *set);
-int routerset_needs_geoip(const routerset_t *set);
-int routerset_contains_router(const routerset_t *set, routerinfo_t *ri);
-int routerset_contains_routerstatus(const routerset_t *set,
-                                    routerstatus_t *rs);
-int routerset_contains_extendinfo(const routerset_t *set,
-                                  const extend_info_t *ei);
-void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset,
-                               int running_only);
-void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source,
-                                const routerset_t *include,
-                                const routerset_t *exclude, int running_only);
-void routerset_subtract_routers(smartlist_t *out,
-                                const routerset_t *routerset);
-char *routerset_to_string(const routerset_t *routerset);
-void routerset_refresh_countries(routerset_t *target);
-int routerset_equal(const routerset_t *old, const routerset_t *new);
-void routerset_free(routerset_t *routerset);
-void routerinfo_set_country(routerinfo_t *ri);
-void routerlist_refresh_countries(void);
-void refresh_all_country_info(void);
-
-int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
-                                         const char *id);
-int hid_serv_acting_as_directory(void);
-int hid_serv_responsible_for_desc_id(const char *id);
-
 /********************************* routerparse.c ************************/
 
 #define MAX_STATUS_TAG_LEN 32
diff --git a/src/or/relay.c b/src/or/relay.c
index 1c15549d0..d227bdfed 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -14,6 +14,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "mempool.h"
+#include "routerlist.h"
 
 static int relay_crypt(circuit_t *circ, cell_t *cell,
                        cell_direction_t cell_direction,
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 9a31c2d73..0a9f483e5 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -8,6 +8,7 @@
  **/
 
 #include "or.h"
+#include "routerlist.h"
 
 /** Called when we've established a circuit to an introduction point:
  * send the introduction request. */
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 814abd8cc..4af041525 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -9,6 +9,7 @@
  **/
 
 #include "or.h"
+#include "routerlist.h"
 
 /** Return 0 if one and two are the same service ids, else -1 or 1 */
 int
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 30df64e05..c7dc3c901 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -9,6 +9,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 
 static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro,
                                             const char *pk_digest);
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 00a2cabe2..25fda237a 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -11,6 +11,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 #include "ht.h"
 
 static void bw_arrays_init(void);
diff --git a/src/or/router.c b/src/or/router.c
index 20316815b..53a4a7db4 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -9,6 +9,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 
 /**
  * \file router.c
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 7d9e48c1d..b4803e9ac 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -14,6 +14,7 @@
 #include "or.h"
 #include "geoip.h"
 #include "router.h"
+#include "routerlist.h"
 
 // #define DEBUG_ROUTERLIST
 
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
new file mode 100644
index 000000000..bbb3c5fe0
--- /dev/null
+++ b/src/or/routerlist.h
@@ -0,0 +1,193 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file routerlist.h
+ * \brief Header file for routerlist functions
+ **/
+
+#ifndef _TOR_ROUTERLIST_H
+#define _TOR_ROUTERLIST_H
+
+int get_n_authorities(authority_type_t type);
+int trusted_dirs_reload_certs(void);
+int trusted_dirs_load_certs_from_string(const char *contents, int from_store,
+                                        int flush);
+void trusted_dirs_flush_certs_to_disk(void);
+authority_cert_t *authority_cert_get_newest_by_id(const char *id_digest);
+authority_cert_t *authority_cert_get_by_sk_digest(const char *sk_digest);
+authority_cert_t *authority_cert_get_by_digests(const char *id_digest,
+                                                const char *sk_digest);
+void authority_cert_get_all(smartlist_t *certs_out);
+void authority_cert_dl_failed(const char *id_digest, int status);
+void authority_certs_fetch_missing(networkstatus_t *status, time_t now);
+int router_reload_router_list(void);
+smartlist_t *router_get_trusted_dir_servers(void);
+
+routerstatus_t *router_pick_directory_server(authority_type_t type, int flags);
+trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d);
+trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d);
+routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags);
+int router_get_my_share_of_directory_requests(double *v2_share_out,
+                                              double *v3_share_out);
+void router_reset_status_download_failures(void);
+void routerlist_add_family(smartlist_t *sl, routerinfo_t *router);
+int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2);
+void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list,
+                                    int must_be_running);
+int router_nickname_is_in_list(routerinfo_t *router, const char *list);
+routerinfo_t *routerlist_find_my_routerinfo(void);
+routerinfo_t *router_find_exact_exit_enclave(const char *address,
+                                             uint16_t port);
+int router_is_unreliable(routerinfo_t *router, int need_uptime,
+                         int need_capacity, int need_guard);
+uint32_t router_get_advertised_bandwidth(routerinfo_t *router);
+uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router);
+
+routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl,
+                                                bandwidth_weight_rule_t rule);
+routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl,
+                                                bandwidth_weight_rule_t rule);
+
+routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist,
+                                        struct routerset_t *excludedset,
+                                        router_crn_flags_t flags);
+
+routerinfo_t *router_get_by_nickname(const char *nickname,
+                                     int warn_if_unnamed);
+int router_digest_version_as_new_as(const char *digest, const char *cutoff);
+int router_digest_is_trusted_dir_type(const char *digest,
+                                      authority_type_t type);
+#define router_digest_is_trusted_dir(d) \
+  router_digest_is_trusted_dir_type((d), NO_AUTHORITY)
+
+int router_addr_is_trusted_dir(uint32_t addr);
+int hexdigest_to_digest(const char *hexdigest, char *digest);
+routerinfo_t *router_get_by_hexdigest(const char *hexdigest);
+routerinfo_t *router_get_by_digest(const char *digest);
+signed_descriptor_t *router_get_by_descriptor_digest(const char *digest);
+signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest);
+signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest);
+const char *signed_descriptor_get_body(signed_descriptor_t *desc);
+const char *signed_descriptor_get_annotations(signed_descriptor_t *desc);
+routerlist_t *router_get_routerlist(void);
+void routerinfo_free(routerinfo_t *router);
+void extrainfo_free(extrainfo_t *extrainfo);
+void routerlist_free(routerlist_t *rl);
+void dump_routerlist_mem_usage(int severity);
+void routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old,
+                       time_t now);
+void routerlist_free_all(void);
+void routerlist_reset_warnings(void);
+void router_set_status(const char *digest, int up);
+
+static int WRA_WAS_ADDED(was_router_added_t s);
+static int WRA_WAS_OUTDATED(was_router_added_t s);
+static int WRA_WAS_REJECTED(was_router_added_t s);
+/** Return true iff the descriptor was added. It might still be necessary to
+ * check whether the descriptor generator should be notified.
+ */
+static INLINE int
+WRA_WAS_ADDED(was_router_added_t s) {
+  return s == ROUTER_ADDED_SUCCESSFULLY || s == ROUTER_ADDED_NOTIFY_GENERATOR;
+}
+/** Return true iff the descriptor was not added because it was either:
+ * - not in the consensus
+ * - neither in the consensus nor in any networkstatus document
+ * - it was outdated.
+ */
+static INLINE int WRA_WAS_OUTDATED(was_router_added_t s)
+{
+  return (s == ROUTER_WAS_NOT_NEW ||
+          s == ROUTER_NOT_IN_CONSENSUS ||
+          s == ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS);
+}
+static INLINE int WRA_WAS_REJECTED(was_router_added_t s)
+{
+  return (s == ROUTER_AUTHDIR_REJECTS);
+}
+was_router_added_t router_add_to_routerlist(routerinfo_t *router,
+                                            const char **msg,
+                                            int from_cache,
+                                            int from_fetch);
+was_router_added_t router_add_extrainfo_to_routerlist(
+                                        extrainfo_t *ei, const char **msg,
+                                        int from_cache, int from_fetch);
+void routerlist_remove_old_routers(void);
+int router_load_single_router(const char *s, uint8_t purpose, int cache,
+                              const char **msg);
+int router_load_routers_from_string(const char *s, const char *eos,
+                                     saved_location_t saved_location,
+                                     smartlist_t *requested_fingerprints,
+                                     int descriptor_digests,
+                                     const char *prepend_annotations);
+void router_load_extrainfo_from_string(const char *s, const char *eos,
+                                       saved_location_t saved_location,
+                                       smartlist_t *requested_fingerprints,
+                                       int descriptor_digests);
+
+void routerlist_retry_directory_downloads(time_t now);
+int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port,
+                                          int need_uptime);
+int router_exit_policy_rejects_all(routerinfo_t *router);
+trusted_dir_server_t *add_trusted_dir_server(const char *nickname,
+                           const char *address,
+                           uint16_t dir_port, uint16_t or_port,
+                           const char *digest, const char *v3_auth_digest,
+                           authority_type_t type);
+void authority_cert_free(authority_cert_t *cert);
+void clear_trusted_dir_servers(void);
+int any_trusted_dir_is_v1_authority(void);
+void update_consensus_router_descriptor_downloads(time_t now, int is_vote,
+                                                  networkstatus_t *consensus);
+void update_router_descriptor_downloads(time_t now);
+void update_extrainfo_downloads(time_t now);
+int router_have_minimum_dir_info(void);
+void router_dir_info_changed(void);
+const char *get_dir_info_status_string(void);
+int count_loading_descriptors_progress(void);
+void router_reset_descriptor_download_failures(void);
+int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2);
+int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
+                                           signed_descriptor_t *sd,
+                                           const char **msg);
+
+void routerlist_assert_ok(routerlist_t *rl);
+const char *esc_router_info(routerinfo_t *router);
+void routers_sort_by_identity(smartlist_t *routers);
+
+routerset_t *routerset_new(void);
+int routerset_parse(routerset_t *target, const char *s,
+                    const char *description);
+void routerset_union(routerset_t *target, const routerset_t *source);
+int routerset_is_list(const routerset_t *set);
+int routerset_needs_geoip(const routerset_t *set);
+int routerset_contains_router(const routerset_t *set, routerinfo_t *ri);
+int routerset_contains_routerstatus(const routerset_t *set,
+                                    routerstatus_t *rs);
+int routerset_contains_extendinfo(const routerset_t *set,
+                                  const extend_info_t *ei);
+void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset,
+                               int running_only);
+void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source,
+                                const routerset_t *include,
+                                const routerset_t *exclude, int running_only);
+void routerset_subtract_routers(smartlist_t *out,
+                                const routerset_t *routerset);
+char *routerset_to_string(const routerset_t *routerset);
+void routerset_refresh_countries(routerset_t *target);
+int routerset_equal(const routerset_t *old, const routerset_t *new);
+void routerset_free(routerset_t *routerset);
+void routerinfo_set_country(routerinfo_t *ri);
+void routerlist_refresh_countries(void);
+void refresh_all_country_info(void);
+
+int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
+                                         const char *id);
+int hid_serv_acting_as_directory(void);
+int hid_serv_responsible_for_desc_id(const char *id);
+
+#endif
+
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 3da1915cc..760f876c3 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -11,6 +11,7 @@
 
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 #include "memarea.h"
 #undef log
 #include <math.h>
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index f99352a9b..5ea09d092 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -9,6 +9,7 @@
 #define ROUTER_PRIVATE
 #include "or.h"
 #include "router.h"
+#include "routerlist.h"
 #include "test.h"
 
 static void
-- 
cgit v1.2.3


From 31e81439e164aa1d098bae3914b6013ed2c3569a Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <b>data</b> */
-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 <b>desc</b> */
@@ -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 <b>data</b> */
+static INLINE void
+rend_data_free(rend_data_t *data)
+{
+  tor_free(data);
+}
+
+int rend_cmp_service_ids(const char *one, const char *two);
+
+void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint,
+                             int command, size_t length, const char *payload);
+
+void rend_service_descriptor_free(rend_service_descriptor_t *desc);
+rend_service_descriptor_t *rend_parse_service_descriptor(const char *str,
+                                                         size_t len);
+int rend_get_service_id(crypto_pk_env_t *pk, char *out);
+void rend_encoded_v2_service_descriptor_free(
+                               rend_encoded_v2_service_descriptor_t *desc);
+void rend_intro_point_free(rend_intro_point_t *intro);
+
+void rend_cache_init(void);
+void rend_cache_clean(void);
+void rend_cache_clean_v2_descs_as_dir(void);
+void rend_cache_free_all(void);
+int rend_valid_service_id(const char *query);
+int rend_cache_lookup_desc(const char *query, int version, const char **desc,
+                           size_t *desc_len);
+int rend_cache_lookup_entry(const char *query, int version,
+                            rend_cache_entry_t **entry_out);
+int rend_cache_lookup_v2_desc_as_dir(const char *query, const char **desc);
+int rend_cache_store(const char *desc, size_t desc_len, int published);
+int rend_cache_store_v2_desc_as_client(const char *desc,
+                                       const rend_data_t *rend_query);
+int rend_cache_store_v2_desc_as_dir(const char *desc);
+int rend_cache_size(void);
+int rend_encode_v2_descriptors(smartlist_t *descs_out,
+                               rend_service_descriptor_t *desc, time_t now,
+                               uint8_t period, rend_auth_type_t auth_type,
+                               crypto_pk_env_t *client_key,
+                               smartlist_t *client_cookies);
+int rend_compute_v2_desc_id(char *desc_id_out, const char *service_id,
+                            const char *descriptor_cookie,
+                            time_t now, uint8_t replica);
+int rend_id_is_in_interval(const char *a, const char *b, const char *c);
+void rend_get_descriptor_id_bytes(char *descriptor_id_out,
+                                  const char *service_id,
+                                  const char *secret_id_part);
+
+#endif
+
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index c7dc3c901..ce37a470c 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -8,6 +8,7 @@
  **/
 
 #include "or.h"
+#include "rendcommon.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index b4803e9ac..02480af03 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -13,6 +13,7 @@
 
 #include "or.h"
 #include "geoip.h"
+#include "rendcommon.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 760f876c3..1a770c87e 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -10,6 +10,7 @@
  **/
 
 #include "or.h"
+#include "rendcommon.h"
 #include "router.h"
 #include "routerlist.h"
 #include "memarea.h"
diff --git a/src/test/test.c b/src/test/test.c
index b8b26b3d9..6cf9ea075 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -44,6 +44,7 @@ double fabs(double x);
 
 #include "or.h"
 #include "geoip.h"
+#include "rendcommon.h"
 #include "test.h"
 #include "torgzip.h"
 #include "mempool.h"
-- 
cgit v1.2.3


From 34dfce0d82b7660ccf80da8314ca664a44b24126 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <math.h>
 #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 <sebastian@torproject.org>
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/test')

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 <math.h>
 #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 c4f8f1316e18e5eeb6efc14659a66f3d6feb0adf Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Thu, 22 Jul 2010 10:22:51 +0200
Subject: Create config.h

---
 src/or/buffers.c         |  1 +
 src/or/circuitbuild.c    |  1 +
 src/or/circuitlist.c     |  1 +
 src/or/circuituse.c      |  1 +
 src/or/command.c         |  1 +
 src/or/config.c          |  1 +
 src/or/config.h          | 78 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/connection.c      |  1 +
 src/or/connection_edge.c |  1 +
 src/or/connection_or.c   |  1 +
 src/or/control.c         |  1 +
 src/or/cpuworker.c       |  1 +
 src/or/directory.c       |  1 +
 src/or/dirserv.c         |  1 +
 src/or/dirvote.c         |  1 +
 src/or/dns.c             |  1 +
 src/or/dnsserv.c         |  1 +
 src/or/geoip.c           |  1 +
 src/or/hibernate.c       |  1 +
 src/or/main.c            |  1 +
 src/or/microdesc.c       |  1 +
 src/or/networkstatus.c   |  1 +
 src/or/onion.c           |  1 +
 src/or/or.h              | 62 --------------------------------------
 src/or/policies.c        |  1 +
 src/or/reasons.c         |  1 +
 src/or/relay.c           |  1 +
 src/or/rendclient.c      |  1 +
 src/or/rendcommon.c      |  1 +
 src/or/rendmid.c         |  1 +
 src/or/rendservice.c     |  1 +
 src/or/rephist.c         |  1 +
 src/or/router.c          |  1 +
 src/or/routerlist.c      |  1 +
 src/or/routerparse.c     |  1 +
 src/test/test.c          |  1 +
 src/test/test_util.c     |  1 +
 37 files changed, 113 insertions(+), 62 deletions(-)
 create mode 100644 src/or/config.h

(limited to 'src/test')

diff --git a/src/or/buffers.c b/src/or/buffers.c
index 807ca5076..2c1ba78ec 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -13,6 +13,7 @@
 #define BUFFERS_PRIVATE
 #include "or.h"
 #include "buffers.h"
+#include "config.h"
 #include "../common/util.h"
 #include "../common/torlog.h"
 #ifdef HAVE_UNISTD_H
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 9d54dbec5..041aed3a0 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -15,6 +15,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 #include "crypto.h"
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index dbbe7bf36..a4ec4c06a 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -13,6 +13,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "routerlist.h"
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 6ae929e84..70def3d48 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -13,6 +13,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/command.c b/src/or/command.c
index 1a5c893b7..96c5fca59 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -19,6 +19,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "command.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/config.c b/src/or/config.c
index e9c9cbd69..a87238bec 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -14,6 +14,7 @@
 #include "or.h"
 #include "circuitbuild.h"
 #include "circuitlist.h"
+#include "config.h"
 #include "geoip.h"
 #include "rendclient.h"
 #include "rendservice.h"
diff --git a/src/or/config.h b/src/or/config.h
new file mode 100644
index 000000000..7a4ba5c60
--- /dev/null
+++ b/src/or/config.h
@@ -0,0 +1,78 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file config.h
+ * \brief Header file for config.c.
+ **/
+
+#ifndef _TOR_CONFIG_H
+#define _TOR_CONFIG_H
+
+const char *get_dirportfrontpage(void);
+or_options_t *get_options(void);
+int set_options(or_options_t *new_val, char **msg);
+void config_free_all(void);
+const char *safe_str_client(const char *address);
+const char *safe_str(const char *address);
+const char *escaped_safe_str_client(const char *address);
+const char *escaped_safe_str(const char *address);
+const char *get_version(void);
+
+int config_get_lines(const char *string, config_line_t **result);
+void config_free_lines(config_line_t *front);
+setopt_err_t options_trial_assign(config_line_t *list, int use_defaults,
+                                  int clear_first, char **msg);
+int resolve_my_address(int warn_severity, or_options_t *options,
+                       uint32_t *addr, char **hostname_out);
+int is_local_addr(const tor_addr_t *addr) ATTR_PURE;
+void options_init(or_options_t *options);
+char *options_dump(or_options_t *options, int minimal);
+int options_init_from_torrc(int argc, char **argv);
+setopt_err_t options_init_from_string(const char *cf,
+                            int command, const char *command_arg, char **msg);
+int option_is_recognized(const char *key);
+const char *option_get_canonical_name(const char *key);
+config_line_t *option_get_assignment(or_options_t *options,
+                                     const char *key);
+int options_save_current(void);
+const char *get_torrc_fname(void);
+char *options_get_datadir_fname2_suffix(or_options_t *options,
+                                        const char *sub1, const char *sub2,
+                                        const char *suffix);
+#define get_datadir_fname2_suffix(sub1, sub2, suffix) \
+  options_get_datadir_fname2_suffix(get_options(), (sub1), (sub2), (suffix))
+/** Return a newly allocated string containing datadir/sub1.  See
+ * get_datadir_fname2_suffix.  */
+#define get_datadir_fname(sub1) get_datadir_fname2_suffix((sub1), NULL, NULL)
+/** Return a newly allocated string containing datadir/sub1/sub2.  See
+ * get_datadir_fname2_suffix.  */
+#define get_datadir_fname2(sub1,sub2) \
+  get_datadir_fname2_suffix((sub1), (sub2), NULL)
+/** Return a newly allocated string containing datadir/sub1suffix.  See
+ * get_datadir_fname2_suffix. */
+#define get_datadir_fname_suffix(sub1, suffix) \
+  get_datadir_fname2_suffix((sub1), NULL, (suffix))
+
+or_state_t *get_or_state(void);
+int or_state_save(time_t now);
+
+int options_need_geoip_info(or_options_t *options, const char **reason_out);
+int getinfo_helper_config(control_connection_t *conn,
+                          const char *question, char **answer,
+                          const char **errmsg);
+
+const char *tor_get_digests(void);
+uint32_t get_effective_bwrate(or_options_t *options);
+uint32_t get_effective_bwburst(or_options_t *options);
+
+#ifdef CONFIG_PRIVATE
+/* Used only by config.c and test.c */
+or_options_t *options_new(void);
+#endif
+
+#endif
+
diff --git a/src/or/connection.c b/src/or/connection.c
index 255dcccdf..5265430ac 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -15,6 +15,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "dnsserv.h"
 #include "geoip.h"
 #include "rendclient.h"
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 311c48161..ec49d6632 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -13,6 +13,7 @@
 #include "buffers.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "dnsserv.h"
 #include "rendclient.h"
 #include "rendcommon.h"
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index a1e372003..f9fda6553 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -14,6 +14,7 @@
 #include "buffers.h"
 #include "circuitbuild.h"
 #include "command.h"
+#include "config.h"
 #include "geoip.h"
 #include "router.h"
 #include "routerlist.h"
diff --git a/src/or/control.c b/src/or/control.c
index 9c2f4f55d..f6363e522 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -15,6 +15,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "dnsserv.h"
 #include "geoip.h"
 #include "router.h"
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index b9c51d4fc..babc6d67b 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -16,6 +16,7 @@
 #include "buffers.h"
 #include "circuitbuild.h"
 #include "circuitlist.h"
+#include "config.h"
 #include "router.h"
 
 /** The maximum number of cpuworker processes we will keep around. */
diff --git a/src/or/directory.c b/src/or/directory.c
index 40f1a1e7f..fa340c126 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -6,6 +6,7 @@
 #include "or.h"
 #include "buffers.h"
 #include "circuitbuild.h"
+#include "config.h"
 #include "geoip.h"
 #include "rendclient.h"
 #include "rendcommon.h"
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index d24fca027..217734487 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -6,6 +6,7 @@
 #define DIRSERV_PRIVATE
 #include "or.h"
 #include "buffers.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 782e04c1b..6e6bf8d08 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -5,6 +5,7 @@
 
 #define DIRVOTE_PRIVATE
 #include "or.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dns.c b/src/or/dns.c
index 131304711..905be3ef9 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -14,6 +14,7 @@
 #include "or.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "router.h"
 #include "ht.h"
 #ifdef HAVE_EVENT2_DNS_H
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index 390ef2f7b..68d8122f8 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -10,6 +10,7 @@
 
 #include "or.h"
 #include "dnsserv.h"
+#include "config.h"
 #ifdef HAVE_EVENT2_DNS_H
 #include <event2/dns.h>
 #include <event2/dns_compat.h>
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 5275c6ec7..16b3b14ed 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -10,6 +10,7 @@
 #define GEOIP_PRIVATE
 #include "or.h"
 #include "ht.h"
+#include "config.h"
 #include "dnsserv.h"
 #include "geoip.h"
 #include "routerlist.h"
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 245c6d4ef..74b1d85de 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -22,6 +22,7 @@ hibernating, phase 2:
 */
 
 #include "or.h"
+#include "config.h"
 #include "router.h"
 
 /** Possible values of hibernate_state */
diff --git a/src/or/main.c b/src/or/main.c
index 9d4dfed80..4af66c356 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -17,6 +17,7 @@
 #include "circuitlist.h"
 #include "circuituse.h"
 #include "command.h"
+#include "config.h"
 #include "dnsserv.h"
 #include "geoip.h"
 #include "rendclient.h"
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index b3c54a84f..0e478bf2a 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -2,6 +2,7 @@
 /* See LICENSE for licensing information */
 
 #include "or.h"
+#include "config.h"
 
 /** A data structure to hold a bunch of cached microdescriptors.  There are
  * two active files in the cache: a "cache file" that we mmap, and a "journal
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 06472f2e6..34ead6f30 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -12,6 +12,7 @@
 
 #include "or.h"
 #include "circuitbuild.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/onion.c b/src/or/onion.c
index 2d666475f..5b4f3a07c 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -12,6 +12,7 @@
 
 #include "or.h"
 #include "circuitlist.h"
+#include "config.h"
 
 /** Type for a linked list of circuits that are waiting for a free CPU worker
  * to process a waiting onion handshake. */
diff --git a/src/or/or.h b/src/or/or.h
index 29d51fc19..d2b6dd8bc 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3066,68 +3066,6 @@ typedef enum setopt_err_t {
   SETOPT_ERR_SETTING = -4,
 } setopt_err_t;
 
-const char *get_dirportfrontpage(void);
-or_options_t *get_options(void);
-int set_options(or_options_t *new_val, char **msg);
-void config_free_all(void);
-const char *safe_str_client(const char *address);
-const char *safe_str(const char *address);
-const char *escaped_safe_str_client(const char *address);
-const char *escaped_safe_str(const char *address);
-const char *get_version(void);
-
-int config_get_lines(const char *string, config_line_t **result);
-void config_free_lines(config_line_t *front);
-setopt_err_t options_trial_assign(config_line_t *list, int use_defaults,
-                                  int clear_first, char **msg);
-int resolve_my_address(int warn_severity, or_options_t *options,
-                       uint32_t *addr, char **hostname_out);
-int is_local_addr(const tor_addr_t *addr) ATTR_PURE;
-void options_init(or_options_t *options);
-char *options_dump(or_options_t *options, int minimal);
-int options_init_from_torrc(int argc, char **argv);
-setopt_err_t options_init_from_string(const char *cf,
-                            int command, const char *command_arg, char **msg);
-int option_is_recognized(const char *key);
-const char *option_get_canonical_name(const char *key);
-config_line_t *option_get_assignment(or_options_t *options,
-                                     const char *key);
-int options_save_current(void);
-const char *get_torrc_fname(void);
-char *options_get_datadir_fname2_suffix(or_options_t *options,
-                                        const char *sub1, const char *sub2,
-                                        const char *suffix);
-#define get_datadir_fname2_suffix(sub1, sub2, suffix) \
-  options_get_datadir_fname2_suffix(get_options(), (sub1), (sub2), (suffix))
-/** Return a newly allocated string containing datadir/sub1.  See
- * get_datadir_fname2_suffix.  */
-#define get_datadir_fname(sub1) get_datadir_fname2_suffix((sub1), NULL, NULL)
-/** Return a newly allocated string containing datadir/sub1/sub2.  See
- * get_datadir_fname2_suffix.  */
-#define get_datadir_fname2(sub1,sub2) \
-  get_datadir_fname2_suffix((sub1), (sub2), NULL)
-/** Return a newly allocated string containing datadir/sub1suffix.  See
- * get_datadir_fname2_suffix. */
-#define get_datadir_fname_suffix(sub1, suffix) \
-  get_datadir_fname2_suffix((sub1), NULL, (suffix))
-
-or_state_t *get_or_state(void);
-int or_state_save(time_t now);
-
-int options_need_geoip_info(or_options_t *options, const char **reason_out);
-int getinfo_helper_config(control_connection_t *conn,
-                          const char *question, char **answer,
-                          const char **errmsg);
-
-const char *tor_get_digests(void);
-uint32_t get_effective_bwrate(or_options_t *options);
-uint32_t get_effective_bwburst(or_options_t *options);
-
-#ifdef CONFIG_PRIVATE
-/* Used only by config.c and test.c */
-or_options_t *options_new(void);
-#endif
-
 /********************************* connection.c ***************************/
 
 const char *conn_type_to_string(int type);
diff --git a/src/or/policies.c b/src/or/policies.c
index f5c02a600..8866b57c9 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -9,6 +9,7 @@
  **/
 
 #include "or.h"
+#include "config.h"
 #include "ht.h"
 
 /** Policy that addresses for incoming SOCKS connections must match. */
diff --git a/src/or/reasons.c b/src/or/reasons.c
index e1c64ebff..569e25390 100644
--- a/src/or/reasons.c
+++ b/src/or/reasons.c
@@ -9,6 +9,7 @@
  **/
 
 #include "or.h"
+#include "config.h"
 
 /***************************** Edge (stream) reasons **********************/
 
diff --git a/src/or/relay.c b/src/or/relay.c
index 87f453dac..53631ab41 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -15,6 +15,7 @@
 #include "buffers.h"
 #include "circuitbuild.h"
 #include "circuitlist.h"
+#include "config.h"
 #include "geoip.h"
 #include "mempool.h"
 #include "rendcommon.h"
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index c8e6c0a4f..5e1f81ee4 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -11,6 +11,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "routerlist.h"
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index e8d101484..a8862ae44 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -10,6 +10,7 @@
 
 #include "or.h"
 #include "circuitbuild.h"
+#include "config.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index a248828a0..f99654372 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -9,6 +9,7 @@
 
 #include "or.h"
 #include "circuitlist.h"
+#include "config.h"
 
 /** Respond to an ESTABLISH_INTRO cell by checking the signed data and
  * setting the circuit's purpose and service pk digest.
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index fea0b06a1..a7ed2007f 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -11,6 +11,7 @@
 #include "circuitbuild.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 4fa421e51..88ba83e3e 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -12,6 +12,7 @@
 #include "or.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "router.h"
 #include "routerlist.h"
 #include "ht.h"
diff --git a/src/or/router.c b/src/or/router.c
index a1af88f57..20990b2dd 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -9,6 +9,7 @@
 #include "or.h"
 #include "circuitlist.h"
 #include "circuituse.h"
+#include "config.h"
 #include "geoip.h"
 #include "router.h"
 #include "routerlist.h"
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 76e9b1b3d..5cf698aaa 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -13,6 +13,7 @@
 
 #include "or.h"
 #include "circuitbuild.h"
+#include "config.h"
 #include "geoip.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 1a770c87e..b406a1cba 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -10,6 +10,7 @@
  **/
 
 #include "or.h"
+#include "config.h"
 #include "rendcommon.h"
 #include "router.h"
 #include "routerlist.h"
diff --git a/src/test/test.c b/src/test/test.c
index ef9d9d61e..30bb1a0f7 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -45,6 +45,7 @@ double fabs(double x);
 #include "or.h"
 #include "buffers.h"
 #include "circuitbuild.h"
+#include "config.h"
 #include "geoip.h"
 #include "rendcommon.h"
 #include "test.h"
diff --git a/src/test/test_util.c b/src/test/test_util.c
index bba96325c..fc31d055c 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -7,6 +7,7 @@
 #define CONTROL_PRIVATE
 #define MEMPOOL_PRIVATE
 #include "or.h"
+#include "config.h"
 #include "test.h"
 #include "mempool.h"
 #include "memarea.h"
-- 
cgit v1.2.3


From 78b6a4650b8ea90d99e49aff2a2c20df461bb127 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <event2/dns.h>
 #include <event2/dns_compat.h>
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 0bfa34e1f6dd97b9860083101479969a94ee2662 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <b>conn</b>, 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 <event2/dns.h>
 #include <event2/dns_compat.h>
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 <b>stmt</b>, which may log events concerning the
  * connection <b>conn</b>.  To prevent infinite loops, disable log messages
  * being sent to controllers if <b>conn</b> 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 <b>conn</b>, 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 bec1c838ca96b69d69b3c275b4703fa539c8c106 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <b>dls</b>, with
+ * the optional status code <b>sc</b>. */
+#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 <b>now</b>, the resource tracked by <b>dls</b> 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 <b>dl</b> 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 <b>dls</b>, with
- * the optional status code <b>sc</b>. */
-#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 <b>now</b>, the resource tracked by <b>dls</b> 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 <b>dl</b> 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 <sebastian@torproject.org>
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/test')

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=<uint32t> Measured=<uint32t>\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=<uint32t> Measured=<uint32t>\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 85f7d544187d48b8cb9516e964b35e1999a15968 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Thu, 22 Jul 2010 12:19:28 +0200
Subject: Create dirvote.h

---
 src/or/config.c        |  1 +
 src/or/directory.c     |  1 +
 src/or/dirserv.c       |  1 +
 src/or/dirvote.c       |  1 +
 src/or/dirvote.h       | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/main.c          |  1 +
 src/or/networkstatus.c |  1 +
 src/or/or.h            | 75 ----------------------------------------
 src/or/routerlist.c    |  1 +
 src/or/routerparse.c   |  1 +
 src/test/test_dir.c    |  1 +
 11 files changed, 102 insertions(+), 75 deletions(-)
 create mode 100644 src/or/dirvote.h

(limited to 'src/test')

diff --git a/src/or/config.c b/src/or/config.c
index 884a059b6..70cadaa0a 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -20,6 +20,7 @@
 #include "control.h"
 #include "cpuworker.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "geoip.h"
 #include "rendclient.h"
 #include "rendservice.h"
diff --git a/src/or/directory.c b/src/or/directory.c
index 10d6ae7ce..69700e867 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -12,6 +12,7 @@
 #include "control.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "geoip.h"
 #include "rendclient.h"
 #include "rendcommon.h"
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 0a39b5d2c..b9fc489d5 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -12,6 +12,7 @@
 #include "control.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index a013c504e..b0c467984 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -8,6 +8,7 @@
 #include "config.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
new file mode 100644
index 000000000..e384dc53b
--- /dev/null
+++ b/src/or/dirvote.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 dirvote.h
+ * \brief Header file for dirvote.c.
+ **/
+
+#ifndef _TOR_DIRVOTE_H
+#define _TOR_DIRVOTE_H
+
+/** Lowest allowable value for VoteSeconds. */
+#define MIN_VOTE_SECONDS 20
+/** Lowest allowable value for DistSeconds. */
+#define MIN_DIST_SECONDS 20
+/** Smallest allowable voting interval. */
+#define MIN_VOTE_INTERVAL 300
+
+/** Precision multiplier for the Bw weights */
+#define BW_WEIGHT_SCALE   10000
+
+void dirvote_free_all(void);
+
+/* vote manipulation */
+char *networkstatus_compute_consensus(smartlist_t *votes,
+                                      int total_authorities,
+                                      crypto_pk_env_t *identity_key,
+                                      crypto_pk_env_t *signing_key,
+                                      const char *legacy_identity_key_digest,
+                                      crypto_pk_env_t *legacy_signing_key,
+                                      consensus_flavor_t flavor);
+int networkstatus_add_detached_signatures(networkstatus_t *target,
+                                          ns_detached_signatures_t *sigs,
+                                          const char **msg_out);
+char *networkstatus_get_detached_signatures(smartlist_t *consensuses);
+void ns_detached_signatures_free(ns_detached_signatures_t *s);
+
+/* cert manipulation */
+authority_cert_t *authority_cert_dup(authority_cert_t *cert);
+
+/* vote scheduling */
+void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out);
+time_t dirvote_get_start_of_next_interval(time_t now, int interval);
+void dirvote_recalculate_timing(or_options_t *options, time_t now);
+void dirvote_act(or_options_t *options, time_t now);
+
+/* invoked on timers and by outside triggers. */
+struct pending_vote_t * dirvote_add_vote(const char *vote_body,
+                                         const char **msg_out,
+                                         int *status_out);
+int dirvote_add_signatures(const char *detached_signatures_body,
+                           const char *source,
+                           const char **msg_out);
+
+/* Item access */
+const char *dirvote_get_pending_consensus(consensus_flavor_t flav);
+const char *dirvote_get_pending_detached_signatures(void);
+#define DGV_BY_ID 1
+#define DGV_INCLUDE_PENDING 2
+#define DGV_INCLUDE_PREVIOUS 4
+const cached_dir_t *dirvote_get_vote(const char *fp, int flags);
+void set_routerstatus_from_routerinfo(routerstatus_t *rs,
+                                      routerinfo_t *ri, time_t now,
+                                      int naming, int listbadexits,
+                                      int listbaddirs);
+void router_clear_status_flags(routerinfo_t *ri);
+networkstatus_t *
+dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
+                                        authority_cert_t *cert);
+
+microdesc_t *dirvote_create_microdescriptor(const routerinfo_t *ri);
+ssize_t dirvote_format_microdesc_vote_line(char *out, size_t out_len,
+                                       const microdesc_t *md);
+
+int vote_routerstatus_find_microdesc_hash(char *digest256_out,
+                                          const vote_routerstatus_t *vrs,
+                                          int method,
+                                          digest_algorithm_t alg);
+document_signature_t *voter_get_sig_by_algorithm(
+                           const networkstatus_voter_info_t *voter,
+                           digest_algorithm_t alg);
+
+#ifdef DIRVOTE_PRIVATE
+char *format_networkstatus_vote(crypto_pk_env_t *private_key,
+                                 networkstatus_t *v3_ns);
+char *dirvote_compute_params(smartlist_t *votes);
+#endif
+
+#endif
+
diff --git a/src/or/main.c b/src/or/main.c
index 89a8eac16..e77359c4d 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -25,6 +25,7 @@
 #include "cpuworker.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "dnsserv.h"
 #include "geoip.h"
 #include "rendclient.h"
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 96c768704..98af3a284 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -17,6 +17,7 @@
 #include "control.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/or.h b/src/or/or.h
index 47a0a90ae..b56837200 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3189,35 +3189,6 @@ typedef struct measured_bw_line_t {
 
 /********************************* dirvote.c ************************/
 
-/** Lowest allowable value for VoteSeconds. */
-#define MIN_VOTE_SECONDS 20
-/** Lowest allowable value for DistSeconds. */
-#define MIN_DIST_SECONDS 20
-/** Smallest allowable voting interval. */
-#define MIN_VOTE_INTERVAL 300
-
-/** Precision multiplier for the Bw weights */
-#define BW_WEIGHT_SCALE   10000
-
-void dirvote_free_all(void);
-
-/* vote manipulation */
-char *networkstatus_compute_consensus(smartlist_t *votes,
-                                      int total_authorities,
-                                      crypto_pk_env_t *identity_key,
-                                      crypto_pk_env_t *signing_key,
-                                      const char *legacy_identity_key_digest,
-                                      crypto_pk_env_t *legacy_signing_key,
-                                      consensus_flavor_t flavor);
-int networkstatus_add_detached_signatures(networkstatus_t *target,
-                                          ns_detached_signatures_t *sigs,
-                                          const char **msg_out);
-char *networkstatus_get_detached_signatures(smartlist_t *consensuses);
-void ns_detached_signatures_free(ns_detached_signatures_t *s);
-
-/* cert manipulation */
-authority_cert_t *authority_cert_dup(authority_cert_t *cert);
-
 /** Describes the schedule by which votes should be generated. */
 typedef struct vote_timing_t {
   int vote_interval;
@@ -3225,52 +3196,6 @@ typedef struct vote_timing_t {
   int vote_delay;
   int dist_delay;
 } vote_timing_t;
-/* vote scheduling */
-void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out);
-time_t dirvote_get_start_of_next_interval(time_t now, int interval);
-void dirvote_recalculate_timing(or_options_t *options, time_t now);
-void dirvote_act(or_options_t *options, time_t now);
-
-/* invoked on timers and by outside triggers. */
-struct pending_vote_t * dirvote_add_vote(const char *vote_body,
-                                         const char **msg_out,
-                                         int *status_out);
-int dirvote_add_signatures(const char *detached_signatures_body,
-                           const char *source,
-                           const char **msg_out);
-
-/* Item access */
-const char *dirvote_get_pending_consensus(consensus_flavor_t flav);
-const char *dirvote_get_pending_detached_signatures(void);
-#define DGV_BY_ID 1
-#define DGV_INCLUDE_PENDING 2
-#define DGV_INCLUDE_PREVIOUS 4
-const cached_dir_t *dirvote_get_vote(const char *fp, int flags);
-void set_routerstatus_from_routerinfo(routerstatus_t *rs,
-                                      routerinfo_t *ri, time_t now,
-                                      int naming, int listbadexits,
-                                      int listbaddirs);
-void router_clear_status_flags(routerinfo_t *ri);
-networkstatus_t *
-dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
-                                        authority_cert_t *cert);
-
-microdesc_t *dirvote_create_microdescriptor(const routerinfo_t *ri);
-ssize_t dirvote_format_microdesc_vote_line(char *out, size_t out_len,
-                                       const microdesc_t *md);
-int vote_routerstatus_find_microdesc_hash(char *digest256_out,
-                                          const vote_routerstatus_t *vrs,
-                                          int method,
-                                          digest_algorithm_t alg);
-document_signature_t *voter_get_sig_by_algorithm(
-                           const networkstatus_voter_info_t *voter,
-                           digest_algorithm_t alg);
-
-#ifdef DIRVOTE_PRIVATE
-char *format_networkstatus_vote(crypto_pk_env_t *private_key,
-                                 networkstatus_t *v3_ns);
-char *dirvote_compute_params(smartlist_t *votes);
-#endif
 
 /********************************* dns.c ***************************/
 
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index f8c8bad04..85e2d14ed 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -18,6 +18,7 @@
 #include "control.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "geoip.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 304509c31..6021ef2a9 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -12,6 +12,7 @@
 #include "or.h"
 #include "config.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "rendcommon.h"
 #include "router.h"
 #include "routerlist.h"
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 0379811dd..206ee4807 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -10,6 +10,7 @@
 #include "or.h"
 #include "directory.h"
 #include "dirserv.h"
+#include "dirvote.h"
 #include "router.h"
 #include "routerlist.h"
 #include "test.h"
-- 
cgit v1.2.3


From 69fcbbaa8932f83ca715d0cf40c69340c90001a1 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Fri, 23 Jul 2010 20:18:55 +0200
Subject: Create networkstatus.h

---
 src/or/circuitbuild.c  |   1 +
 src/or/circuitlist.c   |   1 +
 src/or/config.c        |   1 +
 src/or/connection_or.c |   1 +
 src/or/control.c       |   1 +
 src/or/directory.c     |   1 +
 src/or/dirserv.c       |   1 +
 src/or/dirvote.c       |   1 +
 src/or/main.c          |   1 +
 src/or/networkstatus.c |   1 +
 src/or/networkstatus.h | 101 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/or.h            |  85 -----------------------------------------
 src/or/relay.c         |   1 +
 src/or/rendservice.c   |   1 +
 src/or/routerlist.c    |   1 +
 src/or/routerparse.c   |   1 +
 src/test/test_dir.c    |   1 +
 17 files changed, 116 insertions(+), 85 deletions(-)
 create mode 100644 src/or/networkstatus.h

(limited to 'src/test')

diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 71eb64379..5b360807d 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -22,6 +22,7 @@
 #include "control.h"
 #include "directory.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 #include "crypto.h"
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index d2212dc28..b8c273766 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -18,6 +18,7 @@
 #include "connection_edge.h"
 #include "connection_or.h"
 #include "control.h"
+#include "networkstatus.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "routerlist.h"
diff --git a/src/or/config.c b/src/or/config.c
index 34acc4f8b..bfec2f41b 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -25,6 +25,7 @@
 #include "geoip.h"
 #include "hibernate.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "rendclient.h"
 #include "rendservice.h"
 #include "router.h"
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 0ddd5f14f..8ec52901c 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -21,6 +21,7 @@
 #include "dirserv.h"
 #include "geoip.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/control.c b/src/or/control.c
index e1073ab43..5f5e45fd8 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -25,6 +25,7 @@
 #include "geoip.h"
 #include "hibernate.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/directory.c b/src/or/directory.c
index 8c7bf4fcd..057961da8 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -15,6 +15,7 @@
 #include "dirvote.h"
 #include "geoip.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "router.h"
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 5f2c78917..d23542cf6 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -15,6 +15,7 @@
 #include "dirvote.h"
 #include "hibernate.h"
 #include "microdesc.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 394029812..5b53267ba 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -10,6 +10,7 @@
 #include "dirserv.h"
 #include "dirvote.h"
 #include "microdesc.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/main.c b/src/or/main.c
index 8e4f35cc0..18525f038 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -32,6 +32,7 @@
 #include "hibernate.h"
 #include "main.h"
 #include "microdesc.h"
+#include "networkstatus.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 98af3a284..bd986609f 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -18,6 +18,7 @@
 #include "directory.h"
 #include "dirserv.h"
 #include "dirvote.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
new file mode 100644
index 000000000..4059dead5
--- /dev/null
+++ b/src/or/networkstatus.h
@@ -0,0 +1,101 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file networkstatus.h
+ * \brief Header file for networkstatus.c.
+ **/
+
+#ifndef _TOR_NETWORKSTATUS_H
+#define _TOR_NETWORKSTATUS_H
+
+/** How old do we allow a v2 network-status to get before removing it
+ * completely? */
+#define MAX_NETWORKSTATUS_AGE (10*24*60*60)
+
+void networkstatus_reset_warnings(void);
+void networkstatus_reset_download_failures(void);
+int router_reload_v2_networkstatus(void);
+int router_reload_consensus_networkstatus(void);
+void routerstatus_free(routerstatus_t *rs);
+void networkstatus_v2_free(networkstatus_v2_t *ns);
+void networkstatus_vote_free(networkstatus_t *ns);
+networkstatus_voter_info_t *networkstatus_get_voter_by_id(
+                                       networkstatus_t *vote,
+                                       const char *identity);
+int networkstatus_check_consensus_signature(networkstatus_t *consensus,
+                                            int warn);
+int networkstatus_check_document_signature(const networkstatus_t *consensus,
+                                           document_signature_t *sig,
+                                           const authority_cert_t *cert);
+char *networkstatus_get_cache_filename(const char *identity_digest);
+int router_set_networkstatus_v2(const char *s, time_t arrived_at,
+                             v2_networkstatus_source_t source,
+                             smartlist_t *requested_fingerprints);
+void networkstatus_v2_list_clean(time_t now);
+int compare_digest_to_routerstatus_entry(const void *_key,
+                                         const void **_member);
+routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns,
+                                         const char *digest);
+routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns,
+                                              const char *digest);
+int networkstatus_vote_find_entry_idx(networkstatus_t *ns,
+                                      const char *digest, int *found_out);
+const smartlist_t *networkstatus_get_v2_list(void);
+download_status_t *router_get_dl_status_by_descriptor_digest(const char *d);
+routerstatus_t *router_get_consensus_status_by_id(const char *digest);
+routerstatus_t *router_get_consensus_status_by_descriptor_digest(
+                                                        const char *digest);
+routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname,
+                                                       int warn_if_unnamed);
+const char *networkstatus_get_router_digest_by_nickname(const char *nickname);
+int networkstatus_nickname_is_unnamed(const char *nickname);
+void networkstatus_consensus_download_failed(int status_code);
+void update_consensus_networkstatus_fetch_time(time_t now);
+int should_delay_dir_fetches(or_options_t *options);
+void update_networkstatus_downloads(time_t now);
+void update_certificate_downloads(time_t now);
+int consensus_is_waiting_for_certs(void);
+networkstatus_v2_t *networkstatus_v2_get_by_digest(const char *digest);
+networkstatus_t *networkstatus_get_latest_consensus(void);
+networkstatus_t *networkstatus_get_live_consensus(time_t now);
+networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now);
+#define NSSET_FROM_CACHE 1
+#define NSSET_WAS_WAITING_FOR_CERTS 2
+#define NSSET_DONT_DOWNLOAD_CERTS 4
+#define NSSET_ACCEPT_OBSOLETE 8
+#define NSSET_REQUIRE_FLAVOR 16
+int networkstatus_set_current_consensus(const char *consensus,
+                                        const char *flavor,
+                                        unsigned flags);
+void networkstatus_note_certs_arrived(void);
+void routers_update_all_from_networkstatus(time_t now, int dir_version);
+void routerstatus_list_update_from_consensus_networkstatus(time_t now);
+void routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
+                                                        int reset_failures);
+void signed_descs_update_status_from_consensus_networkstatus(
+                                                         smartlist_t *descs);
+
+char *networkstatus_getinfo_helper_single(routerstatus_t *rs);
+char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
+void networkstatus_dump_bridge_status_to_file(time_t now);
+int32_t get_net_param_from_list(smartlist_t *net_params, const char *name,
+                                int default_val);
+int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name,
+                                int32_t default_val);
+int getinfo_helper_networkstatus(control_connection_t *conn,
+                                 const char *question, char **answer,
+                                 const char **errmsg);
+int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight,
+                                    int32_t default_val);
+const char *networkstatus_get_flavor_name(consensus_flavor_t flav);
+int networkstatus_parse_flavor_name(const char *flavname);
+void document_signature_free(document_signature_t *sig);
+document_signature_t *document_signature_dup(const document_signature_t *sig);
+void networkstatus_free_all(void);
+
+#endif
+
diff --git a/src/or/or.h b/src/or/or.h
index 2b3b38480..4f1eab526 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3274,10 +3274,6 @@ typedef struct microdesc_cache_t microdesc_cache_t;
 
 /********************************* networkstatus.c *********************/
 
-/** How old do we allow a v2 network-status to get before removing it
- * completely? */
-#define MAX_NETWORKSTATUS_AGE (10*24*60*60)
-
 /** Location where we found a v2 networkstatus. */
 typedef enum {
   NS_FROM_CACHE, NS_FROM_DIR_BY_FP, NS_FROM_DIR_ALL, NS_GENERATED
@@ -3297,87 +3293,6 @@ typedef enum version_status_t {
   VS_UNKNOWN, /**< We have no idea. */
 } version_status_t;
 
-void networkstatus_reset_warnings(void);
-void networkstatus_reset_download_failures(void);
-int router_reload_v2_networkstatus(void);
-int router_reload_consensus_networkstatus(void);
-void routerstatus_free(routerstatus_t *rs);
-void networkstatus_v2_free(networkstatus_v2_t *ns);
-void networkstatus_vote_free(networkstatus_t *ns);
-networkstatus_voter_info_t *networkstatus_get_voter_by_id(
-                                       networkstatus_t *vote,
-                                       const char *identity);
-int networkstatus_check_consensus_signature(networkstatus_t *consensus,
-                                            int warn);
-int networkstatus_check_document_signature(const networkstatus_t *consensus,
-                                           document_signature_t *sig,
-                                           const authority_cert_t *cert);
-char *networkstatus_get_cache_filename(const char *identity_digest);
-int router_set_networkstatus_v2(const char *s, time_t arrived_at,
-                             v2_networkstatus_source_t source,
-                             smartlist_t *requested_fingerprints);
-void networkstatus_v2_list_clean(time_t now);
-int compare_digest_to_routerstatus_entry(const void *_key,
-                                         const void **_member);
-routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns,
-                                         const char *digest);
-routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns,
-                                              const char *digest);
-int networkstatus_vote_find_entry_idx(networkstatus_t *ns,
-                                      const char *digest, int *found_out);
-const smartlist_t *networkstatus_get_v2_list(void);
-download_status_t *router_get_dl_status_by_descriptor_digest(const char *d);
-routerstatus_t *router_get_consensus_status_by_id(const char *digest);
-routerstatus_t *router_get_consensus_status_by_descriptor_digest(
-                                                        const char *digest);
-routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname,
-                                                       int warn_if_unnamed);
-const char *networkstatus_get_router_digest_by_nickname(const char *nickname);
-int networkstatus_nickname_is_unnamed(const char *nickname);
-void networkstatus_consensus_download_failed(int status_code);
-void update_consensus_networkstatus_fetch_time(time_t now);
-int should_delay_dir_fetches(or_options_t *options);
-void update_networkstatus_downloads(time_t now);
-void update_certificate_downloads(time_t now);
-int consensus_is_waiting_for_certs(void);
-networkstatus_v2_t *networkstatus_v2_get_by_digest(const char *digest);
-networkstatus_t *networkstatus_get_latest_consensus(void);
-networkstatus_t *networkstatus_get_live_consensus(time_t now);
-networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now);
-#define NSSET_FROM_CACHE 1
-#define NSSET_WAS_WAITING_FOR_CERTS 2
-#define NSSET_DONT_DOWNLOAD_CERTS 4
-#define NSSET_ACCEPT_OBSOLETE 8
-#define NSSET_REQUIRE_FLAVOR 16
-int networkstatus_set_current_consensus(const char *consensus,
-                                        const char *flavor,
-                                        unsigned flags);
-void networkstatus_note_certs_arrived(void);
-void routers_update_all_from_networkstatus(time_t now, int dir_version);
-void routerstatus_list_update_from_consensus_networkstatus(time_t now);
-void routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
-                                                        int reset_failures);
-void signed_descs_update_status_from_consensus_networkstatus(
-                                                         smartlist_t *descs);
-
-char *networkstatus_getinfo_helper_single(routerstatus_t *rs);
-char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
-void networkstatus_dump_bridge_status_to_file(time_t now);
-int32_t get_net_param_from_list(smartlist_t *net_params, const char *name,
-                                int default_val);
-int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name,
-                                int32_t default_val);
-int getinfo_helper_networkstatus(control_connection_t *conn,
-                                 const char *question, char **answer,
-                                 const char **errmsg);
-int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight,
-                                    int32_t default_val);
-const char *networkstatus_get_flavor_name(consensus_flavor_t flav);
-int networkstatus_parse_flavor_name(const char *flavname);
-void document_signature_free(document_signature_t *sig);
-document_signature_t *document_signature_dup(const document_signature_t *sig);
-void networkstatus_free_all(void);
-
 /********************************* ntmain.c ***************************/
 #ifdef MS_WINDOWS
 #if !defined (WINCE)
diff --git a/src/or/relay.c b/src/or/relay.c
index c362bcbfd..83f875428 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -23,6 +23,7 @@
 #include "geoip.h"
 #include "main.h"
 #include "mempool.h"
+#include "networkstatus.h"
 #include "rendcommon.h"
 #include "routerlist.h"
 
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 5d72ef8c0..0324102d9 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -13,6 +13,7 @@
 #include "circuituse.h"
 #include "config.h"
 #include "directory.h"
+#include "networkstatus.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index a84ccb853..f189943a1 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -22,6 +22,7 @@
 #include "geoip.h"
 #include "hibernate.h"
 #include "main.h"
+#include "networkstatus.h"
 #include "rendcommon.h"
 #include "rendservice.h"
 #include "router.h"
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index c3b6ffbb3..a7df1f5e0 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -18,6 +18,7 @@
 #include "routerlist.h"
 #include "memarea.h"
 #include "microdesc.h"
+#include "networkstatus.h"
 #undef log
 #include <math.h>
 
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 206ee4807..628dac7cf 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -11,6 +11,7 @@
 #include "directory.h"
 #include "dirserv.h"
 #include "dirvote.h"
+#include "networkstatus.h"
 #include "router.h"
 #include "routerlist.h"
 #include "test.h"
-- 
cgit v1.2.3


From f6852fe031e066f46337ea936a40e3e2720bc5ad Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Fri, 23 Jul 2010 20:38:25 +0200
Subject: Create onion.h

---
 src/or/circuitbuild.c |  1 +
 src/or/circuitlist.c  |  1 +
 src/or/command.c      |  1 +
 src/or/cpuworker.c    |  1 +
 src/or/main.c         |  1 +
 src/or/onion.c        |  1 +
 src/or/onion.h        | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/or.h           | 34 ----------------------------------
 src/test/test.c       |  1 +
 9 files changed, 55 insertions(+), 34 deletions(-)
 create mode 100644 src/or/onion.h

(limited to 'src/test')

diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 5b360807d..00c9026fa 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -23,6 +23,7 @@
 #include "directory.h"
 #include "main.h"
 #include "networkstatus.h"
+#include "onion.h"
 #include "router.h"
 #include "routerlist.h"
 #include "crypto.h"
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index b8c273766..044cdb9c3 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -19,6 +19,7 @@
 #include "connection_or.h"
 #include "control.h"
 #include "networkstatus.h"
+#include "onion.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "routerlist.h"
diff --git a/src/or/command.c b/src/or/command.c
index 796f75cde..b3b7c2d37 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -25,6 +25,7 @@
 #include "control.h"
 #include "cpuworker.h"
 #include "hibernate.h"
+#include "onion.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 4ab6d4164..2760d9666 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -20,6 +20,7 @@
 #include "connection.h"
 #include "cpuworker.h"
 #include "main.h"
+#include "onion.h"
 #include "router.h"
 
 /** The maximum number of cpuworker processes we will keep around. */
diff --git a/src/or/main.c b/src/or/main.c
index 67688bd6d..b30a77edd 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -34,6 +34,7 @@
 #include "microdesc.h"
 #include "networkstatus.h"
 #include "ntmain.h"
+#include "onion.h"
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
diff --git a/src/or/onion.c b/src/or/onion.c
index 5b4f3a07c..1612d389d 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -13,6 +13,7 @@
 #include "or.h"
 #include "circuitlist.h"
 #include "config.h"
+#include "onion.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/onion.h b/src/or/onion.h
new file mode 100644
index 000000000..e84dbb47b
--- /dev/null
+++ b/src/or/onion.h
@@ -0,0 +1,48 @@
+/* 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 onion.h
+ * \brief Header file for onion.c.
+ **/
+
+#ifndef _TOR_ONION_H
+#define _TOR_ONION_H
+
+int onion_pending_add(or_circuit_t *circ, char *onionskin);
+or_circuit_t *onion_next_task(char **onionskin_out);
+void onion_pending_remove(or_circuit_t *circ);
+
+int onion_skin_create(crypto_pk_env_t *router_key,
+                      crypto_dh_env_t **handshake_state_out,
+                      char *onion_skin_out);
+
+int onion_skin_server_handshake(const char *onion_skin,
+                                crypto_pk_env_t *private_key,
+                                crypto_pk_env_t *prev_private_key,
+                                char *handshake_reply_out,
+                                char *key_out,
+                                size_t key_out_len);
+
+int onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
+                                const char *handshake_reply,
+                                char *key_out,
+                                size_t key_out_len);
+
+int fast_server_handshake(const char *key_in,
+                          char *handshake_reply_out,
+                          char *key_out,
+                          size_t key_out_len);
+
+int fast_client_handshake(const char *handshake_state,
+                          const char *handshake_reply_out,
+                          char *key_out,
+                          size_t key_out_len);
+
+void clear_pending_onions(void);
+
+#endif
+
diff --git a/src/or/or.h b/src/or/or.h
index 2afbac6f3..8322cf3d4 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3293,40 +3293,6 @@ typedef enum version_status_t {
   VS_UNKNOWN, /**< We have no idea. */
 } version_status_t;
 
-/********************************* onion.c ***************************/
-
-int onion_pending_add(or_circuit_t *circ, char *onionskin);
-or_circuit_t *onion_next_task(char **onionskin_out);
-void onion_pending_remove(or_circuit_t *circ);
-
-int onion_skin_create(crypto_pk_env_t *router_key,
-                      crypto_dh_env_t **handshake_state_out,
-                      char *onion_skin_out);
-
-int onion_skin_server_handshake(const char *onion_skin,
-                                crypto_pk_env_t *private_key,
-                                crypto_pk_env_t *prev_private_key,
-                                char *handshake_reply_out,
-                                char *key_out,
-                                size_t key_out_len);
-
-int onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
-                                const char *handshake_reply,
-                                char *key_out,
-                                size_t key_out_len);
-
-int fast_server_handshake(const char *key_in,
-                          char *handshake_reply_out,
-                          char *key_out,
-                          size_t key_out_len);
-
-int fast_client_handshake(const char *handshake_state,
-                          const char *handshake_reply_out,
-                          char *key_out,
-                          size_t key_out_len);
-
-void clear_pending_onions(void);
-
 /********************************* policies.c ************************/
 
 /* (length of "accept 255.255.255.255/255.255.255.255:65535-65535\n" plus a
diff --git a/src/test/test.c b/src/test/test.c
index 7e6bf7055..a1e286819 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -53,6 +53,7 @@ double fabs(double x);
 #include "torgzip.h"
 #include "mempool.h"
 #include "memarea.h"
+#include "onion.h"
 
 #ifdef USE_DMALLOC
 #include <dmalloc.h>
-- 
cgit v1.2.3


From 7bd8dee46371063cd1e62661cd65ce9a35e776e5 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <event2/dns.h>
 #include <event2/dns_compat.h>
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 <dmalloc.h>
-- 
cgit v1.2.3


From df9d42cef56c856db44c22cd3e2eb2a6e2ff1e4c Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
Date: Fri, 23 Jul 2010 22:57:20 +0200
Subject: Create rephist.h

---
 src/or/circuitbuild.c    |  1 +
 src/or/circuitlist.c     |  1 +
 src/or/circuituse.c      |  1 +
 src/or/config.c          |  1 +
 src/or/connection.c      |  1 +
 src/or/connection_edge.c |  1 +
 src/or/connection_or.c   |  1 +
 src/or/directory.c       |  1 +
 src/or/dirserv.c         |  1 +
 src/or/dirvote.c         |  1 +
 src/or/main.c            |  1 +
 src/or/onion.c           |  1 +
 src/or/or.h              | 62 -------------------------------------
 src/or/rendclient.c      |  1 +
 src/or/rendcommon.c      |  1 +
 src/or/rendmid.c         |  1 +
 src/or/rendservice.c     |  1 +
 src/or/rephist.c         |  1 +
 src/or/rephist.h         | 79 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/router.c          |  1 +
 src/or/routerlist.c      |  1 +
 src/or/routerparse.c     |  1 +
 src/test/test.c          |  1 +
 23 files changed, 100 insertions(+), 62 deletions(-)
 create mode 100644 src/or/rephist.h

(limited to 'src/test')

diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index b78845fdd..fc3dbda13 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -26,6 +26,7 @@
 #include "onion.h"
 #include "policies.h"
 #include "relay.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 #include "crypto.h"
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index df4aec727..c581365f8 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -23,6 +23,7 @@
 #include "relay.h"
 #include "rendclient.h"
 #include "rendcommon.h"
+#include "rephist.h"
 #include "routerlist.h"
 #include "ht.h"
 
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index b13e558d0..a3f10a884 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -21,6 +21,7 @@
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/config.c b/src/or/config.c
index 4fdf32e0a..a4e4f89c1 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -30,6 +30,7 @@
 #include "relay.h"
 #include "rendclient.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 #ifdef MS_WINDOWS
diff --git a/src/or/connection.c b/src/or/connection.c
index d9aa1cf78..02acd97e7 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -32,6 +32,7 @@
 #include "relay.h"
 #include "rendclient.h"
 #include "rendcommon.h"
+#include "rephist.h"
 #include "router.h"
 
 static connection_t *connection_create_listener(
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 83ba23058..7522368c5 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -29,6 +29,7 @@
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index bf19503d5..405df1578 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -24,6 +24,7 @@
 #include "networkstatus.h"
 #include "reasons.h"
 #include "relay.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/directory.c b/src/or/directory.c
index 1c13cbd3d..c1e68bf45 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -19,6 +19,7 @@
 #include "policies.h"
 #include "rendclient.h"
 #include "rendcommon.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 38fc8f161..397a0c866 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -17,6 +17,7 @@
 #include "microdesc.h"
 #include "networkstatus.h"
 #include "policies.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 7873e49e7..2448a6a19 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -12,6 +12,7 @@
 #include "microdesc.h"
 #include "networkstatus.h"
 #include "policies.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/main.c b/src/or/main.c
index e202a109d..92c60e7e8 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -40,6 +40,7 @@
 #include "rendclient.h"
 #include "rendcommon.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 #ifdef USE_DMALLOC
diff --git a/src/or/onion.c b/src/or/onion.c
index 1612d389d..ebc358364 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -14,6 +14,7 @@
 #include "circuitlist.h"
 #include "config.h"
 #include "onion.h"
+#include "rephist.h"
 
 /** Type for a linked list of circuits that are waiting for a free CPU worker
  * to process a waiting onion handshake. */
diff --git a/src/or/or.h b/src/or/or.h
index 3e7fe2310..f51da60f7 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3311,51 +3311,6 @@ typedef enum {
 
 /********************************* rephist.c ***************************/
 
-void rep_hist_init(void);
-void rep_hist_note_connect_failed(const char* nickname, time_t when);
-void rep_hist_note_connect_succeeded(const char* nickname, time_t when);
-void rep_hist_note_disconnect(const char* nickname, time_t when);
-void rep_hist_note_connection_died(const char* nickname, time_t when);
-void rep_hist_note_extend_succeeded(const char *from_name,
-                                    const char *to_name);
-void rep_hist_note_extend_failed(const char *from_name, const char *to_name);
-void rep_hist_dump_stats(time_t now, int severity);
-void rep_hist_note_bytes_read(size_t num_bytes, time_t when);
-void rep_hist_note_bytes_written(size_t num_bytes, time_t when);
-void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes);
-void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes);
-void rep_hist_note_exit_stream_opened(uint16_t port);
-void rep_hist_exit_stats_init(time_t now);
-void rep_hist_exit_stats_write(time_t now);
-int rep_hist_bandwidth_assess(void);
-char *rep_hist_get_bandwidth_lines(int for_extrainfo);
-void rep_hist_update_state(or_state_t *state);
-int rep_hist_load_state(or_state_t *state, char **err);
-void rep_history_clean(time_t before);
-
-void rep_hist_note_router_reachable(const char *id, time_t when);
-void rep_hist_note_router_unreachable(const char *id, time_t when);
-int rep_hist_record_mtbf_data(time_t now, int missing_means_down);
-int rep_hist_load_mtbf_data(time_t now);
-
-time_t rep_hist_downrate_old_runs(time_t now);
-double rep_hist_get_stability(const char *id, time_t when);
-double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when);
-long rep_hist_get_weighted_time_known(const char *id, time_t when);
-int rep_hist_have_measured_enough_stability(void);
-const char *rep_hist_get_router_stability_doc(time_t now);
-
-void rep_hist_note_used_port(time_t now, uint16_t port);
-smartlist_t *rep_hist_get_predicted_ports(time_t now);
-void rep_hist_note_used_resolve(time_t now);
-void rep_hist_note_used_internal(time_t now, int need_uptime,
-                                 int need_capacity);
-int rep_hist_get_predicted_internal(time_t now, int *need_uptime,
-                                    int *need_capacity);
-
-int any_predicted_circuits(time_t now);
-int rep_hist_circbuilding_dormant(time_t now);
-
 /** Possible public/private key operations in Tor: used to keep track of where
  * we're spending our time. */
 typedef enum {
@@ -3365,23 +3320,6 @@ typedef enum {
   TLS_HANDSHAKE_C, TLS_HANDSHAKE_S,
   REND_CLIENT, REND_MID, REND_SERVER,
 } pk_op_t;
-void note_crypto_pk_op(pk_op_t operation);
-void dump_pk_ops(int severity);
-
-void rep_hist_free_all(void);
-
-/* for hidden service usage statistics */
-void hs_usage_note_publish_total(const char *service_id, time_t now);
-void hs_usage_note_publish_novel(const char *service_id, time_t now);
-void hs_usage_note_fetch_total(const char *service_id, time_t now);
-void hs_usage_note_fetch_successful(const char *service_id, time_t now);
-void hs_usage_write_statistics_to_file(time_t now);
-void hs_usage_free_all(void);
-
-void rep_hist_buffer_stats_init(time_t now);
-void rep_hist_buffer_stats_add_circ(circuit_t *circ,
-                                    time_t end_of_interval);
-void rep_hist_buffer_stats_write(time_t now);
 
 /********************************* rendcommon.c ***************************/
 
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 166d38da8..0377f121c 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -19,6 +19,7 @@
 #include "relay.h"
 #include "rendclient.h"
 #include "rendcommon.h"
+#include "rephist.h"
 #include "routerlist.h"
 
 /** Called when we've established a circuit to an introduction point:
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index fc43f11bb..8a4de3cca 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -15,6 +15,7 @@
 #include "rendcommon.h"
 #include "rendmid.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "routerlist.h"
 
 /** Return 0 if one and two are the same service ids, else -1 or 1 */
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index 48cb10f52..d392f8e53 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -12,6 +12,7 @@
 #include "config.h"
 #include "relay.h"
 #include "rendmid.h"
+#include "rephist.h"
 
 /** Respond to an ESTABLISH_INTRO cell by checking the signed data and
  * setting the circuit's purpose and service pk digest.
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 2c1c8cfde..f7ab60dbf 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -19,6 +19,7 @@
 #include "rendservice.h"
 #include "router.h"
 #include "relay.h"
+#include "rephist.h"
 #include "routerlist.h"
 
 static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro,
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 88ba83e3e..a419f31e7 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -13,6 +13,7 @@
 #include "circuitlist.h"
 #include "circuituse.h"
 #include "config.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 #include "ht.h"
diff --git a/src/or/rephist.h b/src/or/rephist.h
new file mode 100644
index 000000000..1720c9a9f
--- /dev/null
+++ b/src/or/rephist.h
@@ -0,0 +1,79 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file rephist.h
+ * \brief Header file for rephist functions
+ **/
+
+#ifndef _TOR_REPHIST_H
+#define _TOR_REPHIST_H
+
+void rep_hist_init(void);
+void rep_hist_note_connect_failed(const char* nickname, time_t when);
+void rep_hist_note_connect_succeeded(const char* nickname, time_t when);
+void rep_hist_note_disconnect(const char* nickname, time_t when);
+void rep_hist_note_connection_died(const char* nickname, time_t when);
+void rep_hist_note_extend_succeeded(const char *from_name,
+                                    const char *to_name);
+void rep_hist_note_extend_failed(const char *from_name, const char *to_name);
+void rep_hist_dump_stats(time_t now, int severity);
+void rep_hist_note_bytes_read(size_t num_bytes, time_t when);
+void rep_hist_note_bytes_written(size_t num_bytes, time_t when);
+void rep_hist_note_exit_bytes_read(uint16_t port, size_t num_bytes);
+void rep_hist_note_exit_bytes_written(uint16_t port, size_t num_bytes);
+void rep_hist_note_exit_stream_opened(uint16_t port);
+void rep_hist_exit_stats_init(time_t now);
+void rep_hist_exit_stats_write(time_t now);
+int rep_hist_bandwidth_assess(void);
+char *rep_hist_get_bandwidth_lines(int for_extrainfo);
+void rep_hist_update_state(or_state_t *state);
+int rep_hist_load_state(or_state_t *state, char **err);
+void rep_history_clean(time_t before);
+
+void rep_hist_note_router_reachable(const char *id, time_t when);
+void rep_hist_note_router_unreachable(const char *id, time_t when);
+int rep_hist_record_mtbf_data(time_t now, int missing_means_down);
+int rep_hist_load_mtbf_data(time_t now);
+
+time_t rep_hist_downrate_old_runs(time_t now);
+double rep_hist_get_stability(const char *id, time_t when);
+double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when);
+long rep_hist_get_weighted_time_known(const char *id, time_t when);
+int rep_hist_have_measured_enough_stability(void);
+const char *rep_hist_get_router_stability_doc(time_t now);
+
+void rep_hist_note_used_port(time_t now, uint16_t port);
+smartlist_t *rep_hist_get_predicted_ports(time_t now);
+void rep_hist_note_used_resolve(time_t now);
+void rep_hist_note_used_internal(time_t now, int need_uptime,
+                                 int need_capacity);
+int rep_hist_get_predicted_internal(time_t now, int *need_uptime,
+                                    int *need_capacity);
+
+int any_predicted_circuits(time_t now);
+int rep_hist_circbuilding_dormant(time_t now);
+
+void note_crypto_pk_op(pk_op_t operation);
+void dump_pk_ops(int severity);
+
+void rep_hist_free_all(void);
+
+/* for hidden service usage statistics */
+void hs_usage_note_publish_total(const char *service_id, time_t now);
+void hs_usage_note_publish_novel(const char *service_id, time_t now);
+void hs_usage_note_fetch_total(const char *service_id, time_t now);
+void hs_usage_note_fetch_successful(const char *service_id, time_t now);
+void hs_usage_write_statistics_to_file(time_t now);
+void hs_usage_free_all(void);
+
+void rep_hist_buffer_stats_init(time_t now);
+void rep_hist_buffer_stats_add_circ(circuit_t *circ,
+                                    time_t end_of_interval);
+void rep_hist_buffer_stats_write(time_t now);
+
+#endif
+
diff --git a/src/or/router.c b/src/or/router.c
index bf4256677..36e2d2608 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -20,6 +20,7 @@
 #include "main.h"
 #include "policies.h"
 #include "relay.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 1fb3dbc40..7f47e7128 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -26,6 +26,7 @@
 #include "policies.h"
 #include "rendcommon.h"
 #include "rendservice.h"
+#include "rephist.h"
 #include "router.h"
 #include "routerlist.h"
 
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 0662fd3a1..88fbdbf6c 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -20,6 +20,7 @@
 #include "memarea.h"
 #include "microdesc.h"
 #include "networkstatus.h"
+#include "rephist.h"
 #undef log
 #include <math.h>
 
diff --git a/src/test/test.c b/src/test/test.c
index b5c908a21..8bb694dba 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -55,6 +55,7 @@ double fabs(double x);
 #include "memarea.h"
 #include "onion.h"
 #include "policies.h"
+#include "rephist.h"
 
 #ifdef USE_DMALLOC
 #include <dmalloc.h>
-- 
cgit v1.2.3


From 05072723cb8c14193376964ad5716a962d707770 Mon Sep 17 00:00:00 2001
From: Sebastian Hahn <sebastian@torproject.org>
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/test')

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 <math.h>
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 <b>s</b> is the state of a control_connection_t that has
  * finished authentication and is accepting commands. */
diff --git a/src/or/directory.c b/src/or/directory.c
index 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 <dmalloc.h>
 #include <openssl/crypto.h>
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 <math.h>
 
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 <dmalloc.h>
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