Expand description

Represents a clients’-eye view of the Tor network.

Overview

The tor-netdir crate wraps objects from tor-netdoc, and combines them to provide a unified view of the relays on the network. It is responsible for representing a client’s knowledge of the network’s state and who is on it.

This crate is part of Arti, a project to implement Tor in Rust. Its purpose is to expose an abstract view of a Tor network and the relays in it, so that higher-level crates don’t need to know about the particular documents that describe the network and its properties.

There are two intended users for this crate. First, producers like [tor-dirmgr] create NetDir objects fill them with information from the Tor network directory. Later, consumers like [tor-circmgr] use NetDirs to select relays for random paths through the Tor network.

Limitations

Only modern consensus methods and microdescriptor consensuses are supported.

Modules

List of directories that ships with Tor, for initial directory operations.

Implements a usable view of Tor network parameters.

Structs

A view of the Tor directory, suitable for use in building circuits.

A partially build NetDir – it can’t be unwrapped until it has enough information to build safe paths.

A view of a relay on the Tor network, suitable for building circuits.

An opaque type representing the weight with which a relay or set of relays will be selected for a given role.

Configuration for determining when two relays have addresses “too close” in the network.

A relay that we haven’t checked for validity or usability in routing.

Enums

An error returned by the network directory code

Possible ways to weight relays when selecting them a random.

Traits

A partial or full network directory that we can download microdescriptors for.

Type Definitions

A Result using the Error type from the tor-netdir crate