Skip to content

Commit

Permalink
Merge remote-tracking branch 'tor-gitlab/mr/115'
Browse files Browse the repository at this point in the history
  • Loading branch information
asn-d6 committed Aug 25, 2020
2 parents 6dc0b04 + 24c721d commit cc4e42e
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 277 deletions.
3 changes: 3 additions & 0 deletions changes/ticket29113
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
o Minor features (heartbeat):
- Include the total number of inbound and outbound IPv4 and IPv6
connections in the heartbeat message . Closes ticket 29113.
6 changes: 6 additions & 0 deletions src/core/mainloop/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
#include "core/or/policies.h"
#include "core/or/reasons.h"
#include "core/or/relay.h"
#include "core/or/status.h"
#include "core/or/crypt_path.h"
#include "core/proto/proto_haproxy.h"
#include "core/proto/proto_http.h"
Expand Down Expand Up @@ -2042,6 +2043,9 @@ connection_handle_listener_read(connection_t *conn, int new_type)
connection_mark_for_close(newconn);
return 0;
}

note_connection(true /* inbound */, conn->socket_family);

return 0;
}

Expand Down Expand Up @@ -2213,6 +2217,8 @@ connection_connect_sockaddr,(connection_t *conn,
}
}

note_connection(false /* outbound */, conn->socket_family);

/* it succeeded. we're connected. */
log_fn(inprogress ? LOG_DEBUG : LOG_INFO, LD_NET,
"Connection to socket %s (sock "TOR_SOCKET_T_FORMAT").",
Expand Down
41 changes: 40 additions & 1 deletion src/core/or/status.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,41 @@ log_onion_service_stats(void)
hs_stats_get_n_rendezvous_launches());
}

/**
* @name connection counts for heartbeat
*
* Tracks incoming and outgoing connections on IPv4/IPv6, for heartbeat
* logs.
**/
/**@{*/
static unsigned n_incoming_ipv4;
static unsigned n_incoming_ipv6;
static unsigned n_outgoing_ipv4;
static unsigned n_outgoing_ipv6;
/**@}*/

/**
* Note that a connection has arrived or has been made, for use in the
* heartbeat message.
**/
void
note_connection(bool inbound, int family)
{
if (family == AF_INET) {
if (inbound) {
++n_incoming_ipv4;
} else {
++n_outgoing_ipv4;
}
} else if (family == AF_INET6) {
if (inbound) {
++n_incoming_ipv6;
} else {
++n_outgoing_ipv6;
}
}
}

/** Log a "heartbeat" message describing Tor's status and history so that the
* user can know that there is indeed a running Tor. Return 0 on success and
* -1 on failure. */
Expand Down Expand Up @@ -143,8 +178,12 @@ log_heartbeat(time_t now)
bw_sent = bytes_to_usage(get_bytes_written());

log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: Tor's uptime is %s, with %d "
"circuits open. I've sent %s and received %s.%s",
"circuits open. I've sent %s and received %s. I've received %u "
"connections on IPv4 and %u on IPv6. I've made %u connections "
"with IPv4 and %u with IPv6.%s",
uptime, count_circuits(), bw_sent, bw_rcvd,
n_incoming_ipv4, n_incoming_ipv6,
n_outgoing_ipv4, n_outgoing_ipv6,
hibernating?" We are currently hibernating.":"");

dirclient_dump_total_dls();
Expand Down
1 change: 1 addition & 0 deletions src/core/or/status.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

#include "lib/testsupport/testsupport.h"

void note_connection(bool inbound, int family);
int log_heartbeat(time_t now);

#ifdef STATUS_PRIVATE
Expand Down
Loading

0 comments on commit cc4e42e

Please sign in to comment.