[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Log number of inbound/outbound ipv4/6 conns as part of heartbeat
commit 24c721de37d2e10f5c864c2e8001f1468a8a4506
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Fri Aug 7 10:45:29 2020 -0400
Log number of inbound/outbound ipv4/6 conns as part of heartbeat
Closes #29113
---
changes/ticket29113 | 3 +++
src/core/mainloop/connection.c | 6 ++++++
src/core/or/status.c | 41 ++++++++++++++++++++++++++++++++++++++++-
src/core/or/status.h | 1 +
src/test/test_status.c | 19 +++++++++++++++----
5 files changed, 65 insertions(+), 5 deletions(-)
diff --git a/changes/ticket29113 b/changes/ticket29113
new file mode 100644
index 0000000000..b883999f5b
--- /dev/null
+++ b/changes/ticket29113
@@ -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.
diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c
index b89a4ae796..2b926a076c 100644
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@ -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"
@@ -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;
}
@@ -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").",
diff --git a/src/core/or/status.c b/src/core/or/status.c
index ed8448883c..00a88a3178 100644
--- a/src/core/or/status.c
+++ b/src/core/or/status.c
@@ -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. */
@@ -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();
diff --git a/src/core/or/status.h b/src/core/or/status.h
index 639f8cdf51..271e0dbc9a 100644
--- a/src/core/or/status.h
+++ b/src/core/or/status.h
@@ -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
diff --git a/src/test/test_status.c b/src/test/test_status.c
index 0edc729b00..b938b86326 100644
--- a/src/test/test_status.c
+++ b/src/test/test_status.c
@@ -347,7 +347,9 @@ test_status_hb_not_in_consensus(void *arg)
"not in the cached consensus.\n");
expect_log_msg("Heartbeat: Tor's uptime is 0:00 hours, "
"with 0 circuits open. "
- "I've sent 0 kB and received 0 kB.\n");
+ "I've sent 0 kB and received 0 kB. "
+ "I've received 0 connections on IPv4 and 0 on IPv6. "
+ "I've made 0 connections with IPv4 and 0 with IPv6.\n");
expect_log_msg("Average packaged cell fullness: 100.000%. "
"TLS write overhead: 0%\n");
expect_log_msg("Circuit handshake stats since last time: 1/1 TAP, "
@@ -462,6 +464,8 @@ test_status_hb_simple(void *arg)
expect_log_msg("Heartbeat: Tor's uptime is 0:00 hours, "
"with 0 circuits open. "
"I've sent 0 kB and received 0 kB. "
+ "I've received 0 connections on IPv4 and 0 on IPv6. "
+ "I've made 0 connections with IPv4 and 0 with IPv6. "
"We are currently hibernating.\n");
done:
@@ -581,7 +585,10 @@ test_status_hb_calls_log_accounting(void *arg)
expect_log_msg("Heartbeat: Tor's uptime is 0:00 hours, "
"with 0 circuits open. "
- "I've sent 0 kB and received 0 kB.\n");
+ "I've sent 0 kB and received 0 kB. "
+ "I've received 0 connections on IPv4 and 0 on IPv6. "
+ "I've made 0 connections with IPv4 and 0 with IPv6.\n");
+
expect_log_msg_containing("Heartbeat: Accounting enabled. Sent: 0 kB, "
"Received: 0 kB, Used: 0 kB / 0 kB, Rule: max. "
"The current accounting interval ends on ");
@@ -727,7 +734,9 @@ test_status_hb_packaged_cell_fullness(void *arg)
tt_int_op(actual, OP_EQ, expected);
expect_log_msg("Heartbeat: Tor's uptime is 0:00 hours, "
"with 0 circuits open. "
- "I've sent 0 kB and received 0 kB.\n");
+ "I've sent 0 kB and received 0 kB. "
+ "I've received 0 connections on IPv4 and 0 on IPv6. "
+ "I've made 0 connections with IPv4 and 0 with IPv6.\n");
expect_log_msg("Average packaged cell fullness: 50.000%. "
"TLS write overhead: 0%\n");
@@ -850,7 +859,9 @@ test_status_hb_tls_write_overhead(void *arg)
tt_int_op(actual, OP_EQ, expected);
expect_log_msg("Heartbeat: Tor's uptime is 0:00 hours, "
"with 0 circuits open. "
- "I've sent 0 kB and received 0 kB.\n");
+ "I've sent 0 kB and received 0 kB. "
+ "I've received 0 connections on IPv4 and 0 on IPv6. "
+ "I've made 0 connections with IPv4 and 0 with IPv6.\n");
expect_log_msg("Average packaged cell fullness: 100.000%. "
"TLS write overhead: 100%\n");
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits