1 /* Copyright (c) 2001 Matej Pfajfar.
2 * Copyright (c) 2001-2004, Roger Dingledine.
3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4 * Copyright (c) 2007-2010, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
9 * \brief Header file for rephist.c.
12 #ifndef _TOR_REPHIST_H
13 #define _TOR_REPHIST_H
15 void rep_hist_init(void);
16 void rep_hist_note_connect_failed(const char* nickname
, time_t when
);
17 void rep_hist_note_connect_succeeded(const char* nickname
, time_t when
);
18 void rep_hist_note_disconnect(const char* nickname
, time_t when
);
19 void rep_hist_note_connection_died(const char* nickname
, time_t when
);
20 void rep_hist_note_extend_succeeded(const char *from_name
,
22 void rep_hist_note_extend_failed(const char *from_name
, const char *to_name
);
23 void rep_hist_dump_stats(time_t now
, int severity
);
24 void rep_hist_note_bytes_read(size_t num_bytes
, time_t when
);
25 void rep_hist_note_bytes_written(size_t num_bytes
, time_t when
);
26 int rep_hist_bandwidth_assess(void);
27 char *rep_hist_get_bandwidth_lines(int for_extrainfo
);
28 void rep_hist_update_state(or_state_t
*state
);
29 int rep_hist_load_state(or_state_t
*state
, char **err
);
30 void rep_history_clean(time_t before
);
32 void rep_hist_note_router_reachable(const char *id
, time_t when
);
33 void rep_hist_note_router_unreachable(const char *id
, time_t when
);
34 int rep_hist_record_mtbf_data(time_t now
, int missing_means_down
);
35 int rep_hist_load_mtbf_data(time_t now
);
37 time_t rep_hist_downrate_old_runs(time_t now
);
38 double rep_hist_get_stability(const char *id
, time_t when
);
39 double rep_hist_get_weighted_fractional_uptime(const char *id
, time_t when
);
40 long rep_hist_get_weighted_time_known(const char *id
, time_t when
);
41 int rep_hist_have_measured_enough_stability(void);
42 const char *rep_hist_get_router_stability_doc(time_t now
);
44 void rep_hist_note_used_port(time_t now
, uint16_t port
);
45 smartlist_t
*rep_hist_get_predicted_ports(time_t now
);
46 void rep_hist_note_used_resolve(time_t now
);
47 void rep_hist_note_used_internal(time_t now
, int need_uptime
,
49 int rep_hist_get_predicted_internal(time_t now
, int *need_uptime
,
52 int any_predicted_circuits(time_t now
);
53 int rep_hist_circbuilding_dormant(time_t now
);
55 void note_crypto_pk_op(pk_op_t operation
);
56 void dump_pk_ops(int severity
);
58 void rep_hist_free_all(void);
60 /* for hidden service usage statistics */
61 void hs_usage_note_publish_total(const char *service_id
, time_t now
);
62 void hs_usage_note_publish_novel(const char *service_id
, time_t now
);
63 void hs_usage_note_fetch_total(const char *service_id
, time_t now
);
64 void hs_usage_note_fetch_successful(const char *service_id
, time_t now
);
65 void hs_usage_write_statistics_to_file(time_t now
);
66 void hs_usage_free_all(void);
68 void rep_hist_exit_stats_init(time_t now
);
69 void rep_hist_reset_exit_stats(time_t now
);
70 void rep_hist_exit_stats_term(void);
71 char *rep_hist_exit_stats_history(time_t now
);
72 time_t rep_hist_exit_stats_write(time_t now
);
73 void rep_hist_note_exit_bytes(uint16_t port
, size_t num_written
,
75 void rep_hist_note_exit_stream_opened(uint16_t port
);
77 void rep_hist_buffer_stats_init(time_t now
);
78 void rep_hist_buffer_stats_add_circ(circuit_t
*circ
,
79 time_t end_of_interval
);
80 time_t rep_hist_buffer_stats_write(time_t now
);
81 void rep_hist_buffer_stats_term(void);