rephist.h 4.94 KB
Newer Older
Sebastian Hahn's avatar
Sebastian Hahn committed
1
2
3
/* Copyright (c) 2001 Matej Pfajfar.
 * Copyright (c) 2001-2004, Roger Dingledine.
 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
juga's avatar
juga committed
4
 * Copyright (c) 2007-2018, The Tor Project, Inc. */
Sebastian Hahn's avatar
Sebastian Hahn committed
5
6
7
8
/* See LICENSE for licensing information */

/**
 * \file rephist.h
9
 * \brief Header file for rephist.c.
Sebastian Hahn's avatar
Sebastian Hahn committed
10
11
 **/

12
13
#ifndef TOR_REPHIST_H
#define TOR_REPHIST_H
Sebastian Hahn's avatar
Sebastian Hahn committed
14
15
16
17
18
19
20
21
22
23
24
25

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);
26

27
28
void rep_hist_make_router_pessimal(const char *id, time_t when);

29
30
void rep_hist_note_dir_bytes_read(size_t num_bytes, time_t when);
void rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when);
31

juga's avatar
juga committed
32
MOCK_DECL(int, rep_hist_bandwidth_assess, (void));
33
char *rep_hist_get_bandwidth_lines(void);
Sebastian Hahn's avatar
Sebastian Hahn committed
34
35
36
37
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);

38
void rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr,
39
                                    const uint16_t at_port, time_t when);
Sebastian Hahn's avatar
Sebastian Hahn committed
40
41
42
43
44
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);
45
long rep_hist_get_uptime(const char *id, time_t when);
Sebastian Hahn's avatar
Sebastian Hahn committed
46
47
48
49
50
51
52
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);

void rep_hist_note_used_port(time_t now, uint16_t port);
smartlist_t *rep_hist_get_predicted_ports(time_t now);
53
void rep_hist_remove_predicted_ports(const smartlist_t *rmv_ports);
Sebastian Hahn's avatar
Sebastian Hahn committed
54
55
56
57
58
59
60
61
62
63
64
65
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);

66
67
68
void rep_hist_exit_stats_init(time_t now);
void rep_hist_reset_exit_stats(time_t now);
void rep_hist_exit_stats_term(void);
69
char *rep_hist_format_exit_stats(time_t now);
70
71
72
73
74
time_t rep_hist_exit_stats_write(time_t now);
void rep_hist_note_exit_bytes(uint16_t port, size_t num_written,
                              size_t num_read);
void rep_hist_note_exit_stream_opened(uint16_t port);

Sebastian Hahn's avatar
Sebastian Hahn committed
75
76
77
void rep_hist_buffer_stats_init(time_t now);
void rep_hist_buffer_stats_add_circ(circuit_t *circ,
                                    time_t end_of_interval);
78
79
time_t rep_hist_buffer_stats_write(time_t now);
void rep_hist_buffer_stats_term(void);
80
81
void rep_hist_add_buffer_stats(double mean_num_cells_in_queue,
     double mean_time_cells_in_queue, uint32_t processed_cells);
82
83
char *rep_hist_format_buffer_stats(time_t now);
void rep_hist_reset_buffer_stats(time_t now);
Sebastian Hahn's avatar
Sebastian Hahn committed
84

85
86
87
88
89
void rep_hist_desc_stats_init(time_t now);
void rep_hist_note_desc_served(const char * desc);
void rep_hist_desc_stats_term(void);
time_t rep_hist_desc_stats_write(time_t now);

90
91
92
void rep_hist_conn_stats_init(time_t now);
void rep_hist_note_or_conn_bytes(uint64_t conn_id, size_t num_read,
                                 size_t num_written, time_t when);
93
94
void rep_hist_reset_conn_stats(time_t now);
char *rep_hist_format_conn_stats(time_t now);
95
96
97
time_t rep_hist_conn_stats_write(time_t now);
void rep_hist_conn_stats_term(void);

98
void rep_hist_note_circuit_handshake_requested(uint16_t type);
99
void rep_hist_note_circuit_handshake_assigned(uint16_t type);
100
101
void rep_hist_log_circuit_handshake_stats(time_t now);

102
103
104
105
106
107
108
void rep_hist_hs_stats_init(time_t now);
void rep_hist_hs_stats_term(void);
time_t rep_hist_hs_stats_write(time_t now);
char *rep_hist_get_hs_stats_string(void);
void rep_hist_seen_new_rp_cell(void);
void rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey);

109
110
void rep_hist_free_all(void);

111
112
113
114
void rep_hist_note_negotiated_link_proto(unsigned link_proto,
                                         int started_here);
void rep_hist_log_link_protocol_counts(void);

115
116
117
118
119
120
121
extern uint64_t rephist_total_alloc;
extern uint32_t rephist_total_num;
#ifdef TOR_UNIT_TESTS
extern int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
#endif

Sebastian Hahn's avatar
Sebastian Hahn committed
122
123
#endif