tor  master
Macros | Functions
hs_circuitmap.c File Reference

Hidden service circuitmap: A hash table that maps binary tokens to introduction and rendezvous circuits; it's used: (a) by relays acting as intro points and rendezvous points (b) by hidden services to find intro and rend circuits and (c) by HS clients to find rendezvous circuits. More...

#include "or.h"
#include "config.h"
#include "circuitlist.h"
#include "hs_circuitmap.h"
Include dependency graph for hs_circuitmap.c:

Macros

#define HS_CIRCUITMAP_PRIVATE
 
#define hs_token_free(val)   FREE_AND_NULL(hs_token_t, hs_token_free_, (val))
 

Functions

 HT_PROTOTYPE (HT_GENERATE2(hs_circuitmap_ht, HT_GENERATE2(circuit_t, HT_GENERATE2(hs_circuitmap_node, HT_GENERATE2(hs_circuit_hash_token, HT_GENERATE2(hs_circuits_have_same_token)
 
or_circuit_ths_circuitmap_get_intro_circ_v3_relay_side (const ed25519_public_key_t *auth_key)
 
or_circuit_ths_circuitmap_get_intro_circ_v2_relay_side (const uint8_t *digest)
 
or_circuit_ths_circuitmap_get_rend_circ_relay_side (const uint8_t *cookie)
 
void hs_circuitmap_register_rend_circ_relay_side (or_circuit_t *circ, const uint8_t *cookie)
 
void hs_circuitmap_register_intro_circ_v2_relay_side (or_circuit_t *circ, const uint8_t *digest)
 
void hs_circuitmap_register_intro_circ_v3_relay_side (or_circuit_t *circ, const ed25519_public_key_t *auth_key)
 
origin_circuit_ths_circuitmap_get_intro_circ_v3_service_side (const ed25519_public_key_t *auth_key)
 
origin_circuit_ths_circuitmap_get_intro_circ_v2_service_side (const uint8_t *digest)
 
origin_circuit_ths_circuitmap_get_rend_circ_service_side (const uint8_t *cookie)
 
origin_circuit_ths_circuitmap_get_rend_circ_client_side (const uint8_t *cookie)
 
origin_circuit_ths_circuitmap_get_established_rend_circ_client_side (const uint8_t *cookie)
 
void hs_circuitmap_register_intro_circ_v2_service_side (origin_circuit_t *circ, const uint8_t *digest)
 
void hs_circuitmap_register_intro_circ_v3_service_side (origin_circuit_t *circ, const ed25519_public_key_t *auth_key)
 
void hs_circuitmap_register_rend_circ_service_side (origin_circuit_t *circ, const uint8_t *cookie)
 
void hs_circuitmap_register_rend_circ_client_side (origin_circuit_t *or_circ, const uint8_t *cookie)
 
void hs_circuitmap_remove_circuit (circuit_t *circ)
 
void hs_circuitmap_init (void)
 
void hs_circuitmap_free_all (void)
 

Detailed Description

Hidden service circuitmap: A hash table that maps binary tokens to introduction and rendezvous circuits; it's used: (a) by relays acting as intro points and rendezvous points (b) by hidden services to find intro and rend circuits and (c) by HS clients to find rendezvous circuits.

Function Documentation

◆ hs_circuitmap_get_intro_circ_v3_relay_side()

or_circuit_t* hs_circuitmap_get_intro_circ_v3_relay_side ( const ed25519_public_key_t auth_key)

Public HS circuitmap API: Public relay-side API:

◆ hs_circuitmap_get_intro_circ_v3_service_side()

origin_circuit_t* hs_circuitmap_get_intro_circ_v3_service_side ( const ed25519_public_key_t auth_key)

Public service-side API:

◆ hs_circuitmap_register_rend_circ_relay_side()

void hs_circuitmap_register_rend_circ_relay_side ( or_circuit_t circ,
const uint8_t *  cookie 
)

Public relay-side setters:

◆ hs_circuitmap_remove_circuit()

void hs_circuitmap_remove_circuit ( circuit_t circ)

Public function: Remove this circuit from the HS circuitmap. Clear its HS token, and remove it from the hashtable.