tor  master
Public Member Functions | Data Fields
microdesc_t Struct Reference

#include <or.h>

Collaboration diagram for microdesc_t:
Collaboration graph
[legend]

Public Member Functions

 HT_ENTRY (microdesc_t) node
 

Data Fields

time_t last_listed
 
saved_location_bitfield_t saved_location: 3
 
unsigned int no_save: 1
 
unsigned int held_in_map: 1
 
unsigned int held_by_nodes
 
off_t off
 
char * body
 
size_t bodylen
 
char digest [DIGEST256_LEN]
 
crypto_pk_tonion_pkey
 
curve25519_public_key_tonion_curve25519_pkey
 
ed25519_public_key_ted25519_identity_pkey
 
tor_addr_t ipv6_addr
 
uint16_t ipv6_orport
 
smartlist_tfamily
 
short_policy_texit_policy
 
short_policy_tipv6_exit_policy
 

Detailed Description

A microdescriptor is the smallest amount of information needed to build a circuit through a router. They are generated by the directory authorities, using information from the uploaded routerinfo documents. They are not self-signed, but are rather authenticated by having their hash in a signed networkstatus document.

Member Function Documentation

◆ HT_ENTRY()

HT_ENTRY ( microdesc_t  )

Hashtable node, used to look up the microdesc by its digest.

Field Documentation

◆ body

char* body

A pointer to the encoded body of the microdescriptor. If the saved_location is SAVED_IN_CACHE, then the body is a pointer into an mmap'd region. Otherwise, it is a malloc'd string. The string might not be NUL-terminated; take the length from bodylen.

◆ bodylen

size_t bodylen

The length of the microdescriptor in body.

◆ digest

char digest[DIGEST256_LEN]

A SHA256-digest of the microdescriptor.

◆ ed25519_identity_pkey

ed25519_public_key_t* ed25519_identity_pkey

Ed25519 identity key, if included.

◆ exit_policy

short_policy_t* exit_policy

IPv4 exit policy summary

◆ family

smartlist_t* family

As routerinfo_t.family

◆ held_by_nodes

unsigned int held_by_nodes

Reference count: how many node_ts have a reference to this microdesc?

◆ held_in_map

unsigned int held_in_map

If true, this microdesc has an entry in the microdesc_map

◆ ipv6_addr

tor_addr_t ipv6_addr

◆ ipv6_exit_policy

short_policy_t* ipv6_exit_policy

IPv6 exit policy summary

◆ ipv6_orport

uint16_t ipv6_orport

As routerinfo_t.ipv6_orport

◆ last_listed

time_t last_listed

When was this microdescriptor last listed in a consensus document? Once a microdesc has been unlisted long enough, we can drop it.

◆ no_save

unsigned int no_save

If true, do not attempt to cache this microdescriptor on disk.

◆ off

off_t off

If saved_location == SAVED_IN_CACHE, this field holds the offset of the microdescriptor in the cache.

◆ onion_curve25519_pkey

curve25519_public_key_t* onion_curve25519_pkey

◆ onion_pkey

crypto_pk_t* onion_pkey

◆ saved_location

saved_location_bitfield_t saved_location

Where is this microdescriptor currently stored?


The documentation for this struct was generated from the following file: