diff --git a/src/or/control.c b/src/or/control.c index 972462e38a..401135ca82 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -87,6 +87,7 @@ #include "or_connection_st.h" #include "or_circuit_st.h" #include "origin_circuit_st.h" +#include "rend_service_descriptor_st.h" #ifndef _WIN32 #include diff --git a/src/or/directory.c b/src/or/directory.c index 65aaaa38a6..720ef975ba 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -56,6 +56,7 @@ #include "dir_connection_st.h" #include "dir_server_st.h" #include "entry_connection_st.h" +#include "rend_service_descriptor_st.h" /** * \file directory.c diff --git a/src/or/include.am b/src/or/include.am index 618ffacd03..883366fc1c 100644 --- a/src/or/include.am +++ b/src/or/include.am @@ -279,6 +279,7 @@ ORHEADERS = \ src/or/rendcommon.h \ src/or/rendmid.h \ src/or/rendservice.h \ + src/or/rend_service_descriptor_st.h \ src/or/rephist.h \ src/or/replaycache.h \ src/or/router.h \ diff --git a/src/or/or.h b/src/or/or.h index b67896d2a5..e66bad5ab3 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4145,28 +4145,7 @@ typedef struct rend_intro_point_t { unsigned int circuit_established:1; } rend_intro_point_t; -#define REND_PROTOCOL_VERSION_BITMASK_WIDTH 16 - -/** Information used to connect to a hidden service. Used on both the - * service side and the client side. */ -typedef struct rend_service_descriptor_t { - crypto_pk_t *pk; /**< This service's public key. */ - int version; /**< Version of the descriptor format: 0 or 2. */ - time_t timestamp; /**< Time when the descriptor was generated. */ - /** Bitmask: which introduce/rendezvous protocols are supported? - * (We allow bits '0', '1', '2' and '3' to be set.) */ - unsigned protocols : REND_PROTOCOL_VERSION_BITMASK_WIDTH; - /** List of the service's introduction points. Elements are removed if - * introduction attempts fail. */ - smartlist_t *intro_nodes; - /** Has descriptor been uploaded to all hidden service directories? */ - int all_uploads_performed; - /** List of hidden service directories to which an upload request for - * this descriptor could be sent. Smartlist exists only when at least one - * of the previous upload requests failed (otherwise it's not important - * to know which uploads succeeded and which not). */ - smartlist_t *successful_uploads; -} rend_service_descriptor_t; +typedef struct rend_service_descriptor_t rend_service_descriptor_t; /********************************* routerlist.c ***************************/ diff --git a/src/or/rend_service_descriptor_st.h b/src/or/rend_service_descriptor_st.h new file mode 100644 index 0000000000..bd6d55b6ad --- /dev/null +++ b/src/or/rend_service_descriptor_st.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2017, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#ifndef REND_SERVICE_DESCRIPTOR_ST_H +#define REND_SERVICE_DESCRIPTOR_ST_H + +#define REND_PROTOCOL_VERSION_BITMASK_WIDTH 16 + +/** Information used to connect to a hidden service. Used on both the + * service side and the client side. */ +struct rend_service_descriptor_t { + crypto_pk_t *pk; /**< This service's public key. */ + int version; /**< Version of the descriptor format: 0 or 2. */ + time_t timestamp; /**< Time when the descriptor was generated. */ + /** Bitmask: which introduce/rendezvous protocols are supported? + * (We allow bits '0', '1', '2' and '3' to be set.) */ + unsigned protocols : REND_PROTOCOL_VERSION_BITMASK_WIDTH; + /** List of the service's introduction points. Elements are removed if + * introduction attempts fail. */ + smartlist_t *intro_nodes; + /** Has descriptor been uploaded to all hidden service directories? */ + int all_uploads_performed; + /** List of hidden service directories to which an upload request for + * this descriptor could be sent. Smartlist exists only when at least one + * of the previous upload requests failed (otherwise it's not important + * to know which uploads succeeded and which not). */ + smartlist_t *successful_uploads; +}; + +#endif + diff --git a/src/or/rendcache.c b/src/or/rendcache.c index d27e1c293f..6dd49ee9cc 100644 --- a/src/or/rendcache.c +++ b/src/or/rendcache.c @@ -15,6 +15,8 @@ #include "routerparse.h" #include "rendcommon.h" +#include "rend_service_descriptor_st.h" + /** Map from service id (as generated by rend_get_service_id) to * rend_cache_entry_t. */ STATIC strmap_t *rend_cache = NULL; diff --git a/src/or/rendclient.c b/src/or/rendclient.c index c55f63c33f..1d12e18298 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -38,6 +38,7 @@ #include "dir_connection_st.h" #include "entry_connection_st.h" #include "origin_circuit_st.h" +#include "rend_service_descriptor_st.h" static extend_info_t *rend_client_get_random_intro_impl( const rend_cache_entry_t *rend_query, diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index 719a1537c9..b2d4b0949a 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -34,6 +34,7 @@ #include "cpath_build_state_st.h" #include "crypt_path_st.h" #include "origin_circuit_st.h" +#include "rend_service_descriptor_st.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 ef46ff6ced..e27e8c4fb4 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -41,6 +41,7 @@ #include "crypt_path_reference_st.h" #include "edge_connection_st.h" #include "origin_circuit_st.h" +#include "rend_service_descriptor_st.h" struct rend_service_t; static origin_circuit_t *find_intro_circuit(rend_intro_point_t *intro, diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 06a37904df..af11bc3d5c 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -79,13 +79,14 @@ #include "torcert.h" #include "voting_schedule.h" -#undef log -#include - #include "dirauth/dirvote.h" +#include "rend_service_descriptor_st.h" #include "tor_version_st.h" +#undef log +#include + /****************************************************************************/ /** List of tokens recognized in router descriptors */ diff --git a/src/test/fuzz/fuzz_iptsv2.c b/src/test/fuzz/fuzz_iptsv2.c index 4abde0c16d..db99f62dc9 100644 --- a/src/test/fuzz/fuzz_iptsv2.c +++ b/src/test/fuzz/fuzz_iptsv2.c @@ -4,6 +4,9 @@ #include "or.h" #include "routerparse.h" #include "rendcommon.h" + +#include "rend_service_descriptor_st.h" + #include "fuzzing.h" static void diff --git a/src/test/rend_test_helpers.c b/src/test/rend_test_helpers.c index 9ac3894b0b..177935edfb 100644 --- a/src/test/rend_test_helpers.c +++ b/src/test/rend_test_helpers.c @@ -7,6 +7,8 @@ #include "rendcommon.h" #include "rend_test_helpers.h" +#include "rend_service_descriptor_st.h" + void generate_desc(int time_diff, rend_encoded_v2_service_descriptor_t **desc, char **service_id, int intro_points) diff --git a/src/test/test.c b/src/test/test.c index b92dd3c8a0..0408615605 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -63,6 +63,7 @@ double fabs(double x); #include "crypto_curve25519.h" #include "or_circuit_st.h" +#include "rend_service_descriptor_st.h" /** Run unit tests for the onion handshake code. */ static void diff --git a/src/test/test_rendcache.c b/src/test/test_rendcache.c index 9f6cfc4a22..f1e94eb021 100644 --- a/src/test/test_rendcache.c +++ b/src/test/test_rendcache.c @@ -11,6 +11,9 @@ #include "routerlist.h" #include "config.h" #include "hs_common.h" + +#include "rend_service_descriptor_st.h" + #include "rend_test_helpers.h" #include "log_test_helpers.h"