mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
rephist: Track number of streams seen per type
Related to #40194 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
609a82a595
commit
98b98fd3ce
@ -4119,6 +4119,9 @@ connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ)
|
||||
if (rh.length > RELAY_PAYLOAD_SIZE)
|
||||
return -1;
|
||||
|
||||
/* Note the RESOLVE stream as seen. */
|
||||
rep_hist_note_stream(RELAY_COMMAND_RESOLVE);
|
||||
|
||||
/* This 'dummy_conn' only exists to remember the stream ID
|
||||
* associated with the resolve request; and to make the
|
||||
* implementation of dns.c more uniform. (We really only need to
|
||||
@ -4241,6 +4244,10 @@ connection_exit_connect(edge_connection_t *edge_conn)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Note the BEGIN stream as seen. We do this after the Exit policy check in
|
||||
* order to only account for valid streams. */
|
||||
rep_hist_note_stream(RELAY_COMMAND_BEGIN);
|
||||
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
if (conn->socket_family != AF_UNIX) {
|
||||
#else
|
||||
@ -4336,6 +4343,9 @@ connection_exit_connect_dir(edge_connection_t *exitconn)
|
||||
|
||||
log_info(LD_EXIT, "Opening local connection for anonymized directory exit");
|
||||
|
||||
/* Note the BEGIN_DIR stream as seen. */
|
||||
rep_hist_note_stream(RELAY_COMMAND_BEGIN_DIR);
|
||||
|
||||
exitconn->base_.state = EXIT_CONN_STATE_OPEN;
|
||||
|
||||
dirconn = dir_connection_new(tor_addr_family(&exitconn->base_.addr));
|
||||
|
@ -1639,6 +1639,50 @@ rep_hist_note_exit_stream_opened(uint16_t port)
|
||||
log_debug(LD_HIST, "Opened exit stream to port %d", port);
|
||||
}
|
||||
|
||||
/*** Streams statistics ***/
|
||||
|
||||
/** Number of BEGIN streams seen. */
|
||||
static uint64_t streams_begin_seen;
|
||||
/** Number of BEGIN_DIR streams seen. */
|
||||
static uint64_t streams_begindir_seen;
|
||||
/** Number of RESOLVE streams seen. */
|
||||
static uint64_t streams_resolve_seen;
|
||||
|
||||
/** Note a stream as seen for the given relay command. */
|
||||
void
|
||||
rep_hist_note_stream(unsigned int cmd)
|
||||
{
|
||||
switch (cmd) {
|
||||
case RELAY_COMMAND_BEGIN:
|
||||
streams_begin_seen++;
|
||||
break;
|
||||
case RELAY_COMMAND_BEGIN_DIR:
|
||||
streams_begindir_seen++;
|
||||
break;
|
||||
case RELAY_COMMAND_RESOLVE:
|
||||
streams_resolve_seen++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** Return number of stream seen for the given command. */
|
||||
uint64_t
|
||||
rep_hist_get_stream_seen(unsigned int cmd)
|
||||
{
|
||||
switch (cmd) {
|
||||
case RELAY_COMMAND_BEGIN:
|
||||
return streams_begin_seen;
|
||||
case RELAY_COMMAND_BEGIN_DIR:
|
||||
return streams_begindir_seen;
|
||||
case RELAY_COMMAND_RESOLVE:
|
||||
return streams_resolve_seen;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/******* Connections statistics *******/
|
||||
|
||||
#define CONN_DIRECTION_INITIATED 0
|
||||
|
@ -48,6 +48,9 @@ uint64_t rep_hist_get_conn_created(bool initiated, unsigned int type);
|
||||
uint64_t rep_hist_get_conn_opened(bool initiated, unsigned int type);
|
||||
uint64_t rep_hist_get_conn_rejected(unsigned int type);
|
||||
|
||||
void rep_hist_note_stream(unsigned int cmd);
|
||||
uint64_t rep_hist_get_stream_seen(unsigned int cmd);
|
||||
|
||||
void rep_hist_buffer_stats_init(time_t now);
|
||||
void rep_hist_buffer_stats_add_circ(circuit_t *circ,
|
||||
time_t end_of_interval);
|
||||
|
Loading…
Reference in New Issue
Block a user