[tor-commits] [tor/master] trace: Add four more circuit subsystem tracepoints

nickm at torproject.org nickm at torproject.org
Fri Jul 10 17:05:59 UTC 2020


commit a7063345770002082c2334f290f662c8d4ce644b
Author: David Goulet <dgoulet at torproject.org>
Date:   Wed Jan 15 12:26:54 2020 -0500

    trace: Add four more circuit subsystem tracepoints
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/core/or/circuitbuild.c         |  4 ++++
 src/core/or/circuituse.c           |  8 +++++++-
 src/core/or/trace_probes_circuit.h | 16 ++++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index cef70e3e7..edbce8a2d 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -50,6 +50,7 @@
 #include "core/or/ocirc_event.h"
 #include "core/or/policies.h"
 #include "core/or/relay.h"
+#include "core/or/trace_probes_circuit.h"
 #include "core/or/crypt_path.h"
 #include "feature/client/bridges.h"
 #include "feature/client/circpathbias.h"
@@ -71,6 +72,7 @@
 #include "feature/rend/rendcommon.h"
 #include "feature/stats/predict_ports.h"
 #include "lib/crypt_ops/crypto_rand.h"
+#include "lib/trace/events.h"
 
 #include "core/or/cell_st.h"
 #include "core/or/cpath_build_state_st.h"
@@ -497,6 +499,8 @@ circuit_establish_circuit(uint8_t purpose, extend_info_t *exit_ei, int flags)
     circuit_mark_for_close(TO_CIRCUIT(circ), -err_reason);
     return NULL;
   }
+
+  tor_trace(circuit, establish, circ);
   return circ;
 }
 
diff --git a/src/core/or/circuituse.c b/src/core/or/circuituse.c
index 0e54c28e7..b9c15c155 100644
--- a/src/core/or/circuituse.c
+++ b/src/core/or/circuituse.c
@@ -840,6 +840,7 @@ circuit_expire_building(void)
                  -1);
 
     circuit_log_path(LOG_INFO,LD_CIRC,TO_ORIGIN_CIRCUIT(victim));
+    tor_trace(circuit, timeout, TO_ORIGIN_CIRCUIT(victim));
     if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
       circuit_mark_for_close(victim, END_CIRC_REASON_MEASUREMENT_EXPIRED);
     else
@@ -1503,8 +1504,10 @@ circuit_expire_old_circuits_clientside(void)
                 circ->purpose);
       /* Don't do this magic for testing circuits. Their death is governed
        * by circuit_expire_building */
-      if (circ->purpose != CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
+      if (circ->purpose != CIRCUIT_PURPOSE_PATH_BIAS_TESTING) {
+        tor_trace(circuit, idle_timeout, TO_ORIGIN_CIRCUIT(circ));
         circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
+      }
     } else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) {
       if (timercmp(&circ->timestamp_began, &cutoff, OP_LT)) {
         if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL ||
@@ -1523,6 +1526,7 @@ circuit_expire_old_circuits_clientside(void)
                     " that has been unused for %ld msec.",
                    TO_ORIGIN_CIRCUIT(circ)->global_identifier,
                    tv_mdiff(&circ->timestamp_began, &now));
+          tor_trace(circuit, idle_timeout, TO_ORIGIN_CIRCUIT(circ));
           circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
         } else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) {
           /* Server-side rend joined circuits can end up really old, because
@@ -2207,6 +2211,8 @@ circuit_launch_by_extend_info(uint8_t purpose,
           tor_fragile_assert();
           return NULL;
       }
+
+      tor_trace(circuit, cannibalized, circ);
       return circ;
     }
   }
diff --git a/src/core/or/trace_probes_circuit.h b/src/core/or/trace_probes_circuit.h
index 5fc8f01e9..c0dbd1a50 100644
--- a/src/core/or/trace_probes_circuit.h
+++ b/src/core/or/trace_probes_circuit.h
@@ -147,6 +147,22 @@ TRACEPOINT_EVENT_INSTANCE(tor_circuit, origin_circuit_t_class, opened,
   TP_ARGS(const origin_circuit_t *, circ)
 )
 
+TRACEPOINT_EVENT_INSTANCE(tor_circuit, origin_circuit_t_class, establish,
+  TP_ARGS(const origin_circuit_t *, circ)
+)
+
+TRACEPOINT_EVENT_INSTANCE(tor_circuit, origin_circuit_t_class, cannibalized,
+  TP_ARGS(const origin_circuit_t *, circ)
+)
+
+TRACEPOINT_EVENT_INSTANCE(tor_circuit, origin_circuit_t_class, timeout,
+  TP_ARGS(const origin_circuit_t *, circ)
+)
+
+TRACEPOINT_EVENT_INSTANCE(tor_circuit, origin_circuit_t_class, idle_timeout,
+  TP_ARGS(const origin_circuit_t *, circ)
+)
+
 #endif /* TOR_TRACE_PROBES_CIRCUIT_H */
 
 /* Must be include after the probes declaration. */





More information about the tor-commits mailing list