|
@@ -1733,28 +1733,31 @@ rep_hist_circbuilding_dormant(time_t now)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
-/* DOCDOC n_signed_dir_objs */
|
|
|
-static uint32_t n_signed_dir_objs = 0;
|
|
|
-/* DOCDOC n_signed_routerdescs */
|
|
|
-static uint32_t n_signed_routerdescs = 0;
|
|
|
-/* DOCDOC n_verified_dir_objs */
|
|
|
-static uint32_t n_verified_dir_objs = 0;
|
|
|
-/* DOCDOC n_verified_routerdescs */
|
|
|
-static uint32_t n_verified_routerdescs = 0;
|
|
|
-/* DOCDOC n_onionskins_encrypted */
|
|
|
-static uint32_t n_onionskins_encrypted = 0;
|
|
|
-/* DOCDOC n_onionskins_decrypted */
|
|
|
-static uint32_t n_onionskins_decrypted = 0;
|
|
|
-/* DOCDOC n_tls_client_handshakes */
|
|
|
-static uint32_t n_tls_client_handshakes = 0;
|
|
|
-/* DOCDOC n_tls_server_handshakes */
|
|
|
-static uint32_t n_tls_server_handshakes = 0;
|
|
|
-/* DOCDOC n_rend_client_ops */
|
|
|
-static uint32_t n_rend_client_ops = 0;
|
|
|
-/* DOCDOC n_rend_mid_ops */
|
|
|
-static uint32_t n_rend_mid_ops = 0;
|
|
|
-/* DOCDOC n_rend_server_ops */
|
|
|
-static uint32_t n_rend_server_ops = 0;
|
|
|
+/** Structure to track how many times we've done each public key operation. */
|
|
|
+static struct {
|
|
|
+ /** How many directory objects have we signed? */
|
|
|
+ unsigned long n_signed_dir_objs;
|
|
|
+ /** How many routerdescs have we signed? */
|
|
|
+ unsigned long n_signed_routerdescs;
|
|
|
+ /** How many directory objects have we verified? */
|
|
|
+ unsigned long n_verified_dir_objs;
|
|
|
+ /** How many routerdescs have we verified */
|
|
|
+ unsigned long n_verified_routerdescs;
|
|
|
+ /** How many onionskins have we encrypted to build circuits? */
|
|
|
+ unsigned long n_onionskins_encrypted;
|
|
|
+ /** How many onionskins have we decrypted to do circuit build requests? */
|
|
|
+ unsigned long n_onionskins_decrypted;
|
|
|
+ /** How many times have we done the TLS handshake as a client? */
|
|
|
+ unsigned long n_tls_client_handshakes;
|
|
|
+ /** How many times have we done the TLS handshake as a server? */
|
|
|
+ unsigned long n_tls_server_handshakes;
|
|
|
+ /** How many PK operations have we done as a hidden service client? */
|
|
|
+ unsigned long n_rend_client_ops;
|
|
|
+ /** How many PK operations have we done as a hidden service midpoint? */
|
|
|
+ unsigned long n_rend_mid_ops;
|
|
|
+ /** How many PK operations have we done as a hidden service provider? */
|
|
|
+ unsigned long n_rend_server_ops;
|
|
|
+} pk_op_counts = {0,0,0,0,0,0,0,0,0,0,0};
|
|
|
|
|
|
/** Increment the count of the number of times we've done <b>operation</b>. */
|
|
|
void
|
|
@@ -1763,37 +1766,37 @@ note_crypto_pk_op(pk_op_t operation)
|
|
|
switch (operation)
|
|
|
{
|
|
|
case SIGN_DIR:
|
|
|
- n_signed_dir_objs++;
|
|
|
+ pk_op_counts.n_signed_dir_objs++;
|
|
|
break;
|
|
|
case SIGN_RTR:
|
|
|
- n_signed_routerdescs++;
|
|
|
+ pk_op_counts.n_signed_routerdescs++;
|
|
|
break;
|
|
|
case VERIFY_DIR:
|
|
|
- n_verified_dir_objs++;
|
|
|
+ pk_op_counts.n_verified_dir_objs++;
|
|
|
break;
|
|
|
case VERIFY_RTR:
|
|
|
- n_verified_routerdescs++;
|
|
|
+ pk_op_counts.n_verified_routerdescs++;
|
|
|
break;
|
|
|
case ENC_ONIONSKIN:
|
|
|
- n_onionskins_encrypted++;
|
|
|
+ pk_op_counts.n_onionskins_encrypted++;
|
|
|
break;
|
|
|
case DEC_ONIONSKIN:
|
|
|
- n_onionskins_decrypted++;
|
|
|
+ pk_op_counts.n_onionskins_decrypted++;
|
|
|
break;
|
|
|
case TLS_HANDSHAKE_C:
|
|
|
- n_tls_client_handshakes++;
|
|
|
+ pk_op_counts.n_tls_client_handshakes++;
|
|
|
break;
|
|
|
case TLS_HANDSHAKE_S:
|
|
|
- n_tls_server_handshakes++;
|
|
|
+ pk_op_counts.n_tls_server_handshakes++;
|
|
|
break;
|
|
|
case REND_CLIENT:
|
|
|
- n_rend_client_ops++;
|
|
|
+ pk_op_counts.n_rend_client_ops++;
|
|
|
break;
|
|
|
case REND_MID:
|
|
|
- n_rend_mid_ops++;
|
|
|
+ pk_op_counts.n_rend_mid_ops++;
|
|
|
break;
|
|
|
case REND_SERVER:
|
|
|
- n_rend_server_ops++;
|
|
|
+ pk_op_counts.n_rend_server_ops++;
|
|
|
break;
|
|
|
default:
|
|
|
log_warn(LD_BUG, "Unknown pk operation %d", operation);
|
|
@@ -1816,17 +1819,17 @@ dump_pk_ops(int severity)
|
|
|
"%lu rendezvous client operations, "
|
|
|
"%lu rendezvous middle operations, "
|
|
|
"%lu rendezvous server operations.",
|
|
|
- (unsigned long) n_signed_dir_objs,
|
|
|
- (unsigned long) n_verified_dir_objs,
|
|
|
- (unsigned long) n_signed_routerdescs,
|
|
|
- (unsigned long) n_verified_routerdescs,
|
|
|
- (unsigned long) n_onionskins_encrypted,
|
|
|
- (unsigned long) n_onionskins_decrypted,
|
|
|
- (unsigned long) n_tls_client_handshakes,
|
|
|
- (unsigned long) n_tls_server_handshakes,
|
|
|
- (unsigned long) n_rend_client_ops,
|
|
|
- (unsigned long) n_rend_mid_ops,
|
|
|
- (unsigned long) n_rend_server_ops);
|
|
|
+ pk_op_counts.n_signed_dir_objs,
|
|
|
+ pk_op_counts.n_verified_dir_objs,
|
|
|
+ pk_op_counts.n_signed_routerdescs,
|
|
|
+ pk_op_counts.n_verified_routerdescs,
|
|
|
+ pk_op_counts.n_onionskins_encrypted,
|
|
|
+ pk_op_counts.n_onionskins_decrypted,
|
|
|
+ pk_op_counts.n_tls_client_handshakes,
|
|
|
+ pk_op_counts.n_tls_server_handshakes,
|
|
|
+ pk_op_counts.n_rend_client_ops,
|
|
|
+ pk_op_counts.n_rend_mid_ops,
|
|
|
+ pk_op_counts.n_rend_server_ops);
|
|
|
}
|
|
|
|
|
|
/** Free all storage held by the OR/link history caches, by the
|