Tor 0.4.9.0-alpha-dev
Macros | Functions | Variables
relay_metrics.c File Reference

Relay metrics exposed through the MetricsPort. More...

#include "orconfig.h"
#include "core/or/or.h"
#include "core/mainloop/connection.h"
#include "core/mainloop/mainloop.h"
#include "core/or/command.h"
#include "core/or/congestion_control_common.h"
#include "core/or/congestion_control_vegas.h"
#include "core/or/congestion_control_flow.h"
#include "core/or/circuitlist.h"
#include "core/or/dos.h"
#include "core/or/relay.h"
#include "app/config/config.h"
#include "lib/container/smartlist.h"
#include "lib/log/util_bug.h"
#include "lib/malloc/malloc.h"
#include "lib/math/fp.h"
#include "lib/metrics/metrics_store.h"
#include "feature/hs/hs_dos.h"
#include "feature/nodelist/nodelist.h"
#include "feature/nodelist/node_st.h"
#include "feature/nodelist/routerstatus_st.h"
#include "feature/nodelist/torcert.h"
#include "feature/relay/relay_metrics.h"
#include "feature/relay/router.h"
#include "feature/relay/routerkeys.h"
#include "feature/stats/rephist.h"
#include <event2/dns.h>

Go to the source code of this file.

Functions

static void fill_cc_counters_values (void)
 
static void fill_cc_gauges_values (void)
 
static void fill_circuits_values (void)
 
static void fill_conn_counter_values (void)
 
static void fill_conn_gauge_values (void)
 
static void fill_dns_error_values (void)
 
static void fill_dns_query_values (void)
 
static void fill_dos_values (void)
 
static void fill_global_bw_limit_values (void)
 
static void fill_socket_values (void)
 
static void fill_onionskins_values (void)
 
static void fill_oom_values (void)
 
static void fill_streams_values (void)
 
static void fill_relay_circ_proto_violation (void)
 
static void fill_relay_destroy_cell (void)
 
static void fill_relay_drop_cell (void)
 
static void fill_relay_flags (void)
 
static void fill_tcp_exhaustion_values (void)
 
static void fill_traffic_values (void)
 
static void fill_signing_cert_expiry (void)
 
static void fill_est_intro_cells (void)
 
static void fill_est_rend_cells (void)
 
static void fill_intro1_cells (void)
 
static void fill_rend1_cells (void)
 
static const char * handshake_type_to_str (const uint16_t type)
 
static const char * af_to_string (const int af)
 
static void fill_single_stream_value (metrics_store_entry_t *sentry, uint8_t cmd)
 
static void fill_single_connection_value (metrics_store_entry_t *sentry, unsigned int conn_type, const char *direction, const char *state, int socket_family, uint64_t value)
 
void relay_increment_est_intro_action (est_intro_action_t action)
 
void relay_increment_est_rend_action (est_rend_action_t action)
 
void relay_increment_intro1_action (intro1_action_t action)
 
void relay_increment_rend1_action (rend1_action_t action)
 
static void fill_store (void)
 
const smartlist_trelay_metrics_get_stores (void)
 
void relay_metrics_init (void)
 
void relay_metrics_free (void)
 

Variables

static const relay_metrics_entry_t base_metrics []
 
static const size_t num_base_metrics = ARRAY_LENGTH(base_metrics)
 
static metrics_store_tthe_store
 
static uint64_t est_intro_actions [EST_INTRO_ACTION_COUNT] = {0}
 
static uint64_t est_rend_actions [EST_REND_ACTION_COUNT] = {0}
 
static uint64_t intro1_actions [INTRO1_ACTION_COUNT] = {0}
 
static uint64_t rend1_actions [REND1_ACTION_COUNT] = {0}
 

Detailed Description

Relay metrics exposed through the MetricsPort.

Definition in file relay_metrics.c.

Macro Definition Documentation

◆ RELAY_METRICS_ENTRY_PRIVATE

#define RELAY_METRICS_ENTRY_PRIVATE

Definition at line 9 of file relay_metrics.c.

Function Documentation

◆ af_to_string()

static const char * af_to_string ( const int  af)
inlinestatic

Helper function to convert a socket family type into a string.

Definition at line 273 of file relay_metrics.c.

Referenced by fill_single_connection_value().

◆ fill_cc_counters_values()

static void fill_cc_counters_values ( void  )
static

Declarations of each fill function for metrics defined in base_metrics.

Fill function for the RELAY_METRICS_CC_COUNTERS metric.

Definition at line 471 of file relay_metrics.c.

◆ fill_cc_gauges_values()

static void fill_cc_gauges_values ( void  )
static

Fill function for the RELAY_METRICS_CC_GAUGES metric.

Definition at line 562 of file relay_metrics.c.

◆ fill_circuits_values()

static void fill_circuits_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_CIRCUITS metric.

Definition at line 289 of file relay_metrics.c.

◆ fill_conn_counter_values()

static void fill_conn_counter_values ( void  )
static

Fill function for the RELAY_METRICS_CONN_COUNTERS metric.

Definition at line 771 of file relay_metrics.c.

◆ fill_conn_gauge_values()

static void fill_conn_gauge_values ( void  )
static

Fill function for the RELAY_METRICS_CONN_GAUGES metric.

Definition at line 815 of file relay_metrics.c.

◆ fill_dns_error_values()

static void fill_dns_error_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_DNS_ERRORS metrics.

Definition at line 875 of file relay_metrics.c.

◆ fill_dns_query_values()

static void fill_dns_query_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_DNS metrics.

Definition at line 936 of file relay_metrics.c.

◆ fill_dos_values()

static void fill_dos_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_DOS metric.

Definition at line 404 of file relay_metrics.c.

◆ fill_est_intro_cells()

static void fill_est_intro_cells ( void  )
static

Definition at line 1096 of file relay_metrics.c.

◆ fill_est_rend_cells()

static void fill_est_rend_cells ( void  )
static

Definition at line 1132 of file relay_metrics.c.

◆ fill_global_bw_limit_values()

static void fill_global_bw_limit_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_GLOBAL_RW_LIMIT metrics.

Definition at line 965 of file relay_metrics.c.

◆ fill_intro1_cells()

static void fill_intro1_cells ( void  )
static

Definition at line 1169 of file relay_metrics.c.

◆ fill_onionskins_values()

static void fill_onionskins_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_ONIONSKINS metrics.

Definition at line 1005 of file relay_metrics.c.

◆ fill_oom_values()

static void fill_oom_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_OOM_BYTES metrics.

Definition at line 1037 of file relay_metrics.c.

◆ fill_relay_circ_proto_violation()

static void fill_relay_circ_proto_violation ( void  )
static

Fill the metrics store for the RELAY_METRICS_CIRC_PROTO_VIOLATION.

Definition at line 1263 of file relay_metrics.c.

◆ fill_relay_destroy_cell()

static void fill_relay_destroy_cell ( void  )
static

Fill the metrics store for the RELAY_METRICS_CIRC_DESTROY_CELL counter.

Definition at line 1236 of file relay_metrics.c.

◆ fill_relay_drop_cell()

static void fill_relay_drop_cell ( void  )
static

Fill the metrics store for the RELAY_METRICS_CIRC_DROP_CELL counter.

Definition at line 1250 of file relay_metrics.c.

◆ fill_relay_flags()

static void fill_relay_flags ( void  )
static

Fill function for the RELAY_METRICS_RELAY_FLAGS metric.

Definition at line 304 of file relay_metrics.c.

◆ fill_rend1_cells()

static void fill_rend1_cells ( void  )
static

Definition at line 1207 of file relay_metrics.c.

◆ fill_signing_cert_expiry()

static void fill_signing_cert_expiry ( void  )
static

Fill function for the RELAY_METRICS_SIGNING_CERT_EXPIRY metrics.

Definition at line 1070 of file relay_metrics.c.

◆ fill_single_connection_value()

static void fill_single_connection_value ( metrics_store_entry_t *  sentry,
unsigned int  conn_type,
const char *  direction,
const char *  state,
int  socket_family,
uint64_t  value 
)
static

Helper: Fill in single connection metrics output.

Definition at line 751 of file relay_metrics.c.

◆ fill_single_stream_value()

static void fill_single_stream_value ( metrics_store_entry_t *  sentry,
uint8_t  cmd 
)
static

Helper: Fill in single stream metrics output.

Definition at line 723 of file relay_metrics.c.

Referenced by fill_streams_values().

◆ fill_socket_values()

static void fill_socket_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_SOCKETS metrics.

Definition at line 986 of file relay_metrics.c.

◆ fill_store()

static void fill_store ( void  )
static

Reset the global store and fill it with all the metrics from base_metrics and their associated values.

To pull this off, every metrics has a "fill" function that is called and in charge of adding the metrics to the store, appropriate labels and finally updating the value to report.

Definition at line 1281 of file relay_metrics.c.

Referenced by relay_metrics_get_stores().

◆ fill_streams_values()

static void fill_streams_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_STREAMS metric.

Definition at line 732 of file relay_metrics.c.

◆ fill_tcp_exhaustion_values()

static void fill_tcp_exhaustion_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_DNS metrics.

Definition at line 847 of file relay_metrics.c.

◆ fill_traffic_values()

static void fill_traffic_values ( void  )
static

Fill function for the RELAY_METRICS_NUM_TRAFFIC metric.

Definition at line 384 of file relay_metrics.c.

◆ handshake_type_to_str()

static const char * handshake_type_to_str ( const uint16_t  type)
inlinestatic

Helper function to convert an handshake type into a string.

Definition at line 253 of file relay_metrics.c.

◆ relay_increment_est_intro_action()

void relay_increment_est_intro_action ( est_intro_action_t  action)

Definition at line 1090 of file relay_metrics.c.

◆ relay_increment_est_rend_action()

void relay_increment_est_rend_action ( est_rend_action_t  action)

Definition at line 1126 of file relay_metrics.c.

◆ relay_increment_intro1_action()

void relay_increment_intro1_action ( intro1_action_t  action)

Definition at line 1163 of file relay_metrics.c.

◆ relay_increment_rend1_action()

void relay_increment_rend1_action ( rend1_action_t  action)

Definition at line 1201 of file relay_metrics.c.

◆ relay_metrics_free()

void relay_metrics_free ( void  )

Free the relay metrics.

Definition at line 1331 of file relay_metrics.c.

◆ relay_metrics_get_stores()

const smartlist_t * relay_metrics_get_stores ( void  )

Return a list of all the relay metrics stores. This is the function attached to the .get_metrics() member of the subsys_t.

Definition at line 1298 of file relay_metrics.c.

◆ relay_metrics_init()

void relay_metrics_init ( void  )

Initialize the relay metrics.

Definition at line 1321 of file relay_metrics.c.

Variable Documentation

◆ base_metrics

const relay_metrics_entry_t base_metrics[]
static

◆ est_intro_actions

uint64_t est_intro_actions[EST_INTRO_ACTION_COUNT] = {0}
static

Definition at line 1087 of file relay_metrics.c.

◆ est_rend_actions

uint64_t est_rend_actions[EST_REND_ACTION_COUNT] = {0}
static

Definition at line 1123 of file relay_metrics.c.

◆ intro1_actions

uint64_t intro1_actions[INTRO1_ACTION_COUNT] = {0}
static

Definition at line 1160 of file relay_metrics.c.

◆ num_base_metrics

const size_t num_base_metrics = ARRAY_LENGTH(base_metrics)
static

Definition at line 246 of file relay_metrics.c.

◆ rend1_actions

uint64_t rend1_actions[REND1_ACTION_COUNT] = {0}
static

Definition at line 1198 of file relay_metrics.c.

◆ the_store

metrics_store_t* the_store
static