[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Record IPv6 bandwidth history as appropriate.
commit 27c5cadf7e86551c7d62d27b107098266bb4c11b
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Fri Jul 10 08:44:46 2020 -0400
Record IPv6 bandwidth history as appropriate.
---
src/core/mainloop/connection.c | 5 +++--
src/core/or/circuitlist.c | 8 +++++++-
src/feature/stats/bwhist.c | 8 ++++++--
src/feature/stats/bwhist.h | 4 ++--
4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c
index 960735fc2..2f3c70365 100644
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@ -3366,11 +3366,12 @@ record_num_bytes_transferred_impl(connection_t *conn,
rep_hist_note_or_conn_bytes(conn->global_identifier, num_read,
num_written, now);
+ const bool is_ipv6 = (conn->socket_family == AF_INET6);
if (num_read > 0) {
- bwhist_note_bytes_read(num_read, now);
+ bwhist_note_bytes_read(num_read, now, is_ipv6);
}
if (num_written > 0) {
- bwhist_note_bytes_written(num_written, now);
+ bwhist_note_bytes_written(num_written, now, is_ipv6);
}
if (conn->type == CONN_TYPE_EXIT)
rep_hist_note_exit_bytes(conn->port, num_written, num_read);
diff --git a/src/core/or/circuitlist.c b/src/core/or/circuitlist.c
index f0f182e5d..28b3fa8ff 100644
--- a/src/core/or/circuitlist.c
+++ b/src/core/or/circuitlist.c
@@ -2167,6 +2167,12 @@ circuit_synchronize_written_or_bandwidth(const circuit_t *c,
else
cell_size = CELL_MAX_NETWORK_SIZE;
+ /* If we know the channel, find out if it's IPv6. */
+ tor_addr_t remote_addr;
+ bool is_ipv6 = chan &&
+ channel_get_addr_if_possible(chan, &remote_addr) &&
+ tor_addr_family(&remote_addr) == AF_INET6;
+
/* The missing written bytes are the cell counts times their cell
* size plus TLS per cell overhead */
written_sync = cells*(cell_size+TLS_PER_CELL_OVERHEAD);
@@ -2174,7 +2180,7 @@ circuit_synchronize_written_or_bandwidth(const circuit_t *c,
/* Report the missing bytes as written, to avoid asymmetry.
* We must use time() for consistency with rephist, even though on
* some very old rare platforms, approx_time() may be faster. */
- bwhist_note_bytes_written(written_sync, time(NULL));
+ bwhist_note_bytes_written(written_sync, time(NULL), is_ipv6);
}
/** Mark <b>circ</b> to be closed next time we call
diff --git a/src/feature/stats/bwhist.c b/src/feature/stats/bwhist.c
index 44717f33b..e74a2881f 100644
--- a/src/feature/stats/bwhist.c
+++ b/src/feature/stats/bwhist.c
@@ -205,7 +205,7 @@ bwhist_init(void)
* earlier than the latest <b>when</b> you've heard of.
*/
void
-bwhist_note_bytes_written(uint64_t num_bytes, time_t when)
+bwhist_note_bytes_written(uint64_t num_bytes, time_t when, bool ipv6)
{
/* Maybe a circular array for recent seconds, and step to a new point
* every time a new second shows up. Or simpler is to just to have
@@ -216,16 +216,20 @@ bwhist_note_bytes_written(uint64_t num_bytes, time_t when)
* somewhere. See bwhist_bandwidth_assess() below.
*/
add_obs(write_array, when, num_bytes);
+ if (ipv6)
+ add_obs(write_array_ipv6, when, num_bytes);
}
/** Remember that we wrote <b>num_bytes</b> bytes in second <b>when</b>.
* (like bwhist_note_bytes_written() above)
*/
void
-bwhist_note_bytes_read(uint64_t num_bytes, time_t when)
+bwhist_note_bytes_read(uint64_t num_bytes, time_t when, bool ipv6)
{
/* if we're smart, we can make this func and the one above share code */
add_obs(read_array, when, num_bytes);
+ if (ipv6)
+ add_obs(read_array_ipv6, when, num_bytes);
}
/** Remember that we wrote <b>num_bytes</b> directory bytes in second
diff --git a/src/feature/stats/bwhist.h b/src/feature/stats/bwhist.h
index 17d2a8394..d556f5a02 100644
--- a/src/feature/stats/bwhist.h
+++ b/src/feature/stats/bwhist.h
@@ -15,8 +15,8 @@
void bwhist_init(void);
void bwhist_free_all(void);
-void bwhist_note_bytes_read(uint64_t num_bytes, time_t when);
-void bwhist_note_bytes_written(uint64_t num_bytes, time_t when);
+void bwhist_note_bytes_read(uint64_t num_bytes, time_t when, bool ipv6);
+void bwhist_note_bytes_written(uint64_t num_bytes, time_t when, bool ipv6);
void bwhist_note_dir_bytes_read(uint64_t num_bytes, time_t when);
void bwhist_note_dir_bytes_written(uint64_t num_bytes, time_t when);
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits