[tor-commits] [tor/master] Add IPv6 read and write history to bwhist, state, and extrainfo.

dgoulet at torproject.org dgoulet at torproject.org
Fri Jul 10 16:52:52 UTC 2020


commit c5db7667d6964344e87fb7ee71df3f2ebe8131e6
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Jul 10 08:29:24 2020 -0400

    Add IPv6 read and write history to bwhist, state, and extrainfo.
    
    These values are stored, persisted, and published.  They are not yet
    actually filled with anything.
---
 src/app/config/or_state_st.h |  8 ++++++++
 src/app/config/statefile.c   |  8 ++++++++
 src/feature/stats/bwhist.c   | 21 +++++++++++++++++++--
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/app/config/or_state_st.h b/src/app/config/or_state_st.h
index 8c4e9d5e6..31b7f8a98 100644
--- a/src/app/config/or_state_st.h
+++ b/src/app/config/or_state_st.h
@@ -65,6 +65,14 @@ struct or_state_t {
   int         BWHistoryWriteInterval;
   struct smartlist_t *BWHistoryWriteValues;
   struct smartlist_t *BWHistoryWriteMaxima;
+  time_t      BWHistoryIPv6ReadEnds;
+  int         BWHistoryIPv6ReadInterval;
+  struct smartlist_t *BWHistoryIPv6ReadValues;
+  struct smartlist_t *BWHistoryIPv6ReadMaxima;
+  time_t      BWHistoryIPv6WriteEnds;
+  int         BWHistoryIPv6WriteInterval;
+  struct smartlist_t *BWHistoryIPv6WriteValues;
+  struct smartlist_t *BWHistoryIPv6WriteMaxima;
   time_t      BWHistoryDirReadEnds;
   int         BWHistoryDirReadInterval;
   struct smartlist_t *BWHistoryDirReadValues;
diff --git a/src/app/config/statefile.c b/src/app/config/statefile.c
index 4198c8a38..b25167d2e 100644
--- a/src/app/config/statefile.c
+++ b/src/app/config/statefile.c
@@ -112,6 +112,14 @@ static const config_var_t state_vars_[] = {
   V(BWHistoryWriteInterval,           POSINT,     "900"),
   V(BWHistoryWriteValues,             CSV,      ""),
   V(BWHistoryWriteMaxima,             CSV,      ""),
+  V(BWHistoryIPv6ReadEnds,                ISOTIME,  NULL),
+  V(BWHistoryIPv6ReadInterval,            POSINT,     "900"),
+  V(BWHistoryIPv6ReadValues,              CSV,      ""),
+  V(BWHistoryIPv6ReadMaxima,              CSV,      ""),
+  V(BWHistoryIPv6WriteEnds,               ISOTIME,  NULL),
+  V(BWHistoryIPv6WriteInterval,           POSINT,     "900"),
+  V(BWHistoryIPv6WriteValues,             CSV,      ""),
+  V(BWHistoryIPv6WriteMaxima,             CSV,      ""),
   V(BWHistoryDirReadEnds,             ISOTIME,  NULL),
   V(BWHistoryDirReadInterval,         POSINT,     "900"),
   V(BWHistoryDirReadValues,           CSV,      ""),
diff --git a/src/feature/stats/bwhist.c b/src/feature/stats/bwhist.c
index fef8a3b2d..44717f33b 100644
--- a/src/feature/stats/bwhist.c
+++ b/src/feature/stats/bwhist.c
@@ -162,10 +162,14 @@ bw_array_free_(bw_array_t *b)
   tor_free(b);
 }
 
-/** Recent history of bandwidth observations for read operations. */
+/** Recent history of bandwidth observations for (all) read operations. */
 static bw_array_t *read_array = NULL;
-/** Recent history of bandwidth observations for write operations. */
+/** Recent history of bandwidth observations for IPv6 read operations. */
+static bw_array_t *read_array_ipv6 = NULL;
+/** Recent history of bandwidth observations for (all) write operations. */
 STATIC bw_array_t *write_array = NULL;
+/** Recent history of bandwidth observations for IPv6 write operations. */
+static bw_array_t *write_array_ipv6 = NULL;
 /** Recent history of bandwidth observations for read operations for the
     directory protocol. */
 static bw_array_t *dir_read_array = NULL;
@@ -179,12 +183,16 @@ void
 bwhist_init(void)
 {
   bw_array_free(read_array);
+  bw_array_free(read_array_ipv6);
   bw_array_free(write_array);
+  bw_array_free(write_array_ipv6);
   bw_array_free(dir_read_array);
   bw_array_free(dir_write_array);
 
   read_array = bw_array_new();
+  read_array_ipv6 = bw_array_new();
   write_array = bw_array_new();
+  write_array_ipv6 = bw_array_new();
   dir_read_array = bw_array_new();
   dir_write_array = bw_array_new();
 }
@@ -358,6 +366,8 @@ bwhist_get_bandwidth_lines(void)
 
   bwhist_get_one_bandwidth_line(buf, "write-history", write_array);
   bwhist_get_one_bandwidth_line(buf, "read-history", read_array);
+  bwhist_get_one_bandwidth_line(buf, "ipv6-write-history", write_array_ipv6);
+  bwhist_get_one_bandwidth_line(buf, "ipv6-read-history", read_array_ipv6);
   bwhist_get_one_bandwidth_line(buf, "dirreq-write-history", dir_write_array);
   bwhist_get_one_bandwidth_line(buf, "dirreq-read-history", dir_read_array);
 
@@ -441,6 +451,8 @@ bwhist_update_state(or_state_t *state)
 
   UPDATE(write_array, Write);
   UPDATE(read_array, Read);
+  UPDATE(write_array_ipv6, IPv6Write);
+  UPDATE(read_array_ipv6, IPv6Read);
   UPDATE(dir_write_array, DirWrite);
   UPDATE(dir_read_array, DirRead);
 
@@ -535,6 +547,7 @@ bwhist_load_state(or_state_t *state, char **err)
 
   /* Assert they already have been malloced */
   tor_assert(read_array && write_array);
+  tor_assert(read_array_ipv6 && write_array_ipv6);
   tor_assert(dir_read_array && dir_write_array);
 
 #define LOAD(arrname,st)                                                \
@@ -548,6 +561,8 @@ bwhist_load_state(or_state_t *state, char **err)
 
   LOAD(write_array, Write);
   LOAD(read_array, Read);
+  LOAD(write_array_ipv6, IPv6Write);
+  LOAD(read_array_ipv6, IPv6Read);
   LOAD(dir_write_array, DirWrite);
   LOAD(dir_read_array, DirRead);
 
@@ -565,7 +580,9 @@ void
 bwhist_free_all(void)
 {
   bw_array_free(read_array);
+  bw_array_free(read_array_ipv6);
   bw_array_free(write_array);
+  bw_array_free(write_array_ipv6);
   bw_array_free(dir_read_array);
   bw_array_free(dir_write_array);
 }





More information about the tor-commits mailing list