aboutsummaryrefslogtreecommitdiff
path: root/src/feature/stats/rephist.h
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@riseup.net>2020-10-26 18:27:16 +0200
committerGeorge Kadianakis <desnacked@riseup.net>2020-11-02 21:05:50 +0200
commit5ed7fcec41db16820c3777451d083d0d74f124ce (patch)
treeebe8500cb53dddc08d5ea8a19629ce3879795118 /src/feature/stats/rephist.h
parent1de7843658e00baa2271048fb3e3e436639e70c4 (diff)
downloadtor-5ed7fcec41db16820c3777451d083d0d74f124ce.tar.gz
tor-5ed7fcec41db16820c3777451d083d0d74f124ce.zip
Make room for v3: Complete move from hs_stats_t to hs_v2_stats_t.
Diffstat (limited to 'src/feature/stats/rephist.h')
-rw-r--r--src/feature/stats/rephist.h40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index abcb70249f..d5ad21e228 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -64,11 +64,10 @@ MOCK_DECL(int, rep_hist_get_circuit_handshake_requested, (uint16_t type));
MOCK_DECL(int, rep_hist_get_circuit_handshake_assigned, (uint16_t type));
void rep_hist_hs_v2_stats_init(time_t now);
-void rep_hist_hs_v2_stats_term(void);
time_t rep_hist_hs_v2_stats_write(time_t now);
char *rep_hist_get_hs_v2_stats_string(void);
void rep_hist_seen_new_rp_cell(void);
-void rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey);
+void rep_hist_hsdir_stored_maybe_new_v2_onion(const crypto_pk_t *pubkey);
void rep_hist_free_all(void);
@@ -83,6 +82,38 @@ extern int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
#endif
+#ifdef REPHIST_PRIVATE
+/** Carries the various hidden service statistics, and any other
+ * information needed. */
+typedef struct hs_v2_stats_t {
+ /** How many v2 relay cells have we seen as rendezvous points? */
+ uint64_t rp_v2_relay_cells_seen;
+
+ /** Set of unique public key digests we've seen this stat period
+ * (could also be implemented as sorted smartlist). */
+ digestmap_t *v2_onions_seen_this_period;
+} hs_v2_stats_t;
+
+/** Structure that contains the various statistics we keep about v3
+ * services.
+ *
+ * Because of the time period logic of v3 services, v3 statistics are more
+ * sensitive to time than v2 stats. For this reason, we collect v3
+ * statistics strictly from 12:00UTC to 12:00UTC as dictated by
+ * 'start_of_hs_v3_stats_interval'.
+ **/
+typedef struct hs_v3_stats_t {
+ /** How many v3 relay cells have we seen as a rendezvous point? */
+ uint64_t rp_v3_relay_cells_seen;
+
+ /* The number of unique v3 onion descriptors (actually, unique v3 blind keys)
+ * we've seen during the measurement period */
+ digestmap_t *v3_onions_seen_this_period;
+} hs_v3_stats_t;
+
+STATIC char *rep_hist_format_hs_v2_stats(time_t now, bool is_v3);
+#endif /* defined(REPHIST_PRIVATE) */
+
/**
* Represents the type of a cell for padding accounting
*/
@@ -108,4 +139,9 @@ void rep_hist_reset_padding_counts(void);
void rep_hist_prep_published_padding_counts(time_t now);
void rep_hist_padding_count_timers(uint64_t num_timers);
+#ifdef TOR_UNIT_TESTS
+typedef struct hs_v2_stats_t hs_v2_stats_t;
+const hs_v2_stats_t *rep_hist_get_hs_v2_stats(void);
+#endif
+
#endif /* !defined(TOR_REPHIST_H) */