tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

hs_metrics_entry.h (4082B)


      1 /* Copyright (c) 2020-2021, The Tor Project, Inc. */
      2 /* See LICENSE for licensing information */
      3 
      4 /**
      5 * @file hs_metrics_entry.h
      6 * @brief Header for feature/hs/hs_metrics_entry.c
      7 **/
      8 
      9 #ifndef TOR_FEATURE_HS_METRICS_ENTRY_H
     10 #define TOR_FEATURE_HS_METRICS_ENTRY_H
     11 
     12 #ifdef HS_METRICS_ENTRY_PRIVATE
     13 
     14 #include "lib/metrics/metrics_common.h"
     15 
     16 /* Possible values for the reason label of the
     17 * hs_intro_rejected_intro_req_count metric. */
     18 /** The hidden service received an unknown introduction auth key. */
     19 #define HS_METRICS_ERR_INTRO_REQ_BAD_AUTH_KEY      "bad_auth_key"
     20 /** The hidden service received a malformed INTRODUCE2 cell. */
     21 #define HS_METRICS_ERR_INTRO_REQ_INTRODUCE2        "invalid_introduce2"
     22 /** The hidden service does not have the necessary subcredential. */
     23 #define HS_METRICS_ERR_INTRO_REQ_SUBCREDENTIAL     "subcredential"
     24 /** The hidden service received an INTRODUCE2 replay. */
     25 #define HS_METRICS_ERR_INTRO_REQ_INTRODUCE2_REPLAY "replay"
     26 
     27 /* Possible values for the reason label of the hs_rdv_error_count metric. */
     28 /** The hidden service failed to connect to the rendezvous point. */
     29 #define HS_METRICS_ERR_RDV_RP_CONN_FAILURE         "rp_conn_failure"
     30 /** The hidden service failed to build a circuit to the rendezvous point due
     31 * to an invalid selected path. */
     32 #define  HS_METRICS_ERR_RDV_PATH                   "invalid_path"
     33 /** The hidden service failed to send the RENDEZVOUS1 cell on rendezvous
     34 * circuit. */
     35 #define HS_METRICS_ERR_RDV_RENDEZVOUS1             "rendezvous1"
     36 /** The hidden service failed to set up an end-to-end rendezvous circuit to
     37 * the client. */
     38 #define HS_METRICS_ERR_RDV_E2E                     "e2e_circ"
     39 /** The hidden service reattempted to connect to the rendezvous point by
     40 * launching a new circuit to it, but failed */
     41 #define HS_METRICS_ERR_RDV_RETRY                   "retry"
     42 
     43 /** Metrics key which are used as an index in the main base metrics array. */
     44 typedef enum {
     45  /** Number of introduction requests. */
     46  HS_METRICS_NUM_INTRODUCTIONS = 0,
     47  /** Number of bytes written from onion service to application. */
     48  HS_METRICS_APP_WRITE_BYTES = 1,
     49  /** Number of bytes read from application to onion service. */
     50  HS_METRICS_APP_READ_BYTES = 2,
     51  /** Number of established rendezvous. */
     52  HS_METRICS_NUM_ESTABLISHED_RDV = 3,
     53  /** Number of rendezvous circuits created. */
     54  HS_METRICS_NUM_RDV = 4,
     55  /** Number of failed rendezvous. */
     56  HS_METRICS_NUM_FAILED_RDV = 5,
     57  /** Number of established introducton points. */
     58  HS_METRICS_NUM_ESTABLISHED_INTRO = 6,
     59  /** Number of rejected introducton requests. */
     60  HS_METRICS_NUM_REJECTED_INTRO_REQ = 7,
     61  /** Introduction circuit build time in milliseconds. */
     62  HS_METRICS_INTRO_CIRC_BUILD_TIME = 8,
     63  /** Rendezvous circuit build time in milliseconds. */
     64  HS_METRICS_REND_CIRC_BUILD_TIME = 9,
     65  /** Number of requests waiting in the proof of work priority queue. */
     66  HS_METRICS_POW_NUM_PQUEUE_RDV = 10,
     67  /** Suggested effort for requests with a proof of work client puzzle. */
     68  HS_METRICS_POW_SUGGESTED_EFFORT = 11,
     69 } hs_metrics_key_t;
     70 
     71 /** The metadata of an HS metrics. */
     72 typedef struct hs_metrics_entry_t {
     73  /* Metric key used as a static array index. */
     74  hs_metrics_key_t key;
     75  /* Metric type. */
     76  metrics_type_t type;
     77  /* Metrics output name. */
     78  const char *name;
     79  /* Metrics output help comment. */
     80  const char *help;
     81  /* The buckets, if the metric type is METRICS_TYPE_HISTOGRAM. */
     82  const int64_t *buckets;
     83  /* The number of buckets, if the metric type is METRICS_TYPE_HISTOGRAM. */
     84  size_t bucket_count;
     85  /* True iff a port label should be added to the metrics entry. */
     86  bool port_as_label;
     87 } hs_metrics_entry_t;
     88 
     89 extern const hs_metrics_entry_t base_metrics[];
     90 extern const size_t base_metrics_size;
     91 
     92 extern const char *hs_metrics_intro_req_error_reasons[];
     93 extern const size_t hs_metrics_intro_req_error_reasons_size;
     94 
     95 extern const char *hs_metrics_rend_error_reasons[];
     96 extern const size_t hs_metrics_rend_error_reasons_size;
     97 
     98 #endif /* defined(HS_METRICS_ENTRY_PRIVATE) */
     99 #endif /* !defined(TOR_FEATURE_HS_METRICS_ENTRY_H) */