Weave documentation
Rust referenceweave-dht

weave-dht · route_v1

Source declarations, signatures and documentation for route_v1.

Source: sigil/weave/network/weave-dht/src/route_v1.rs. SHA-256: ff9516473dd9c99207754349f893a592f0caf360500a5567e3f5eb4e6cdab02d.

This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.

route_v1::ROUTE_SET_VERSION

pub const ROUTE_SET_VERSION: u64;

Source line: 15.

route_v1::MAX_ROUTE_SET_BYTES

pub const MAX_ROUTE_SET_BYTES: usize;

Source line: 16.

route_v1::MAX_PRIVATE_INNER_ROUTE_SET_BYTES

pub const MAX_PRIVATE_INNER_ROUTE_SET_BYTES: usize;

Source line: 17.

route_v1::MAX_ROUTE_CANDIDATES

pub const MAX_ROUTE_CANDIDATES: usize;

Source line: 18.

route_v1::MAX_SUPPORTED_PROTOCOLS

pub const MAX_SUPPORTED_PROTOCOLS: usize;

Source line: 19.

route_v1::MAX_TRANSPORT_PEER_ID_BYTES

pub const MAX_TRANSPORT_PEER_ID_BYTES: usize;

Source line: 20.

route_v1::MAX_MULTIADDR_BYTES

pub const MAX_MULTIADDR_BYTES: usize;

Source line: 21.

route_v1::MAX_OPERATOR_DOMAIN_BYTES

pub const MAX_OPERATOR_DOMAIN_BYTES: usize;

Source line: 22.

route_v1::MAX_PROTOCOL_ID_BYTES

pub const MAX_PROTOCOL_ID_BYTES: usize;

Source line: 23.

route_v1::MAX_ROUTE_LIFETIME_MS

pub const MAX_ROUTE_LIFETIME_MS: u64;

Source line: 24.

route_v1::ALLOCATED_FEATURES_MASK

pub const ALLOCATED_FEATURES_MASK: u64;

Source line: 25.

route_v1::ALLOCATED_SERVICE_ROLES_MASK

pub const ALLOCATED_SERVICE_ROLES_MASK: u16;

Source line: 26.

route_v1::ROUTE_SIGNATURE_DOMAIN

pub const ROUTE_SIGNATURE_DOMAIN: &[u8];

Source line: 27.

route_v1::ROUTE_SET_DIGEST_DOMAIN

pub const ROUTE_SET_DIGEST_DOMAIN: &[u8];

Source line: 28.

route_v1::Protocol1CodecError

#[derive(Debug, Clone, Copy, PartialEq, Eq, Error)]
pub enum Protocol1CodecError {
    #[error("malformed Protocol 1.0 data")]
    Malformed,
    #[error("noncanonical Protocol 1.0 data")]
    NonCanonical,
    #[error("unknown or missing fixed-schema field")]
    UnknownOrMissingField,
    #[error("Protocol 1.0 resource bound exceeded")]
    ResourceLimitExceeded,
    #[error("route signature or transport identity is invalid")]
    TransportAuthenticationFailed,
    #[error("route record is expired, future-issued, or has an invalid lifetime")]
    InvalidLifetime,
    #[error("route sequence is stale, rolled back, or equivocates")]
    Rollback,
    #[error("route contains an unsafe address")]
    AddressPolicyDenied,
    #[error("route requires an unsupported Protocol 1.0 feature")]
    UnsupportedCriticalFeature,
    #[error("private discovery rejected")]
    PrivateDiscoveryRejected,
}

Source line: 31.

route_v1::Protocol1CodecError::public_error_family

Frozen externally visible error family for this codec slice.

Diagnostic enum variants remain local. Callers must not serialize their display text to an unauthorized peer.

pub fn public_error_family(self) -> &'static str;

Source line: 59.

route_v1::EndpointProfile

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum EndpointProfile {
    NativeFull = 0,
    NativeRestricted = 1,
    PortableMacosAlpha = 2,
    OfflineLan = 3,
    BrowserReserved = 4,
}

Source line: 77.

route_v1::PrivacyProfile

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum PrivacyProfile {
    Public = 0,
    PrivateStandard = 1,
    PrivateMetadata = 2,
}

Source line: 102.

route_v1::RouteTransport

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum RouteTransport {
    TcpNoiseYamux = 0,
    QuicV1 = 1,
    CircuitRelayV2 = 2,
    Tcp443Relay = 3,
    ExplicitOverlay = 4,
    WebTransportReserved = 5,
    WebRtcReserved = 6,
}

Source line: 123.

route_v1::CandidateScope

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum CandidateScope {
    Public = 0,
    AuthenticatedLan = 1,
    ObservedPublic = 2,
    VerifiedMapping = 3,
    ExplicitOverlay = 4,
}

Source line: 152.

route_v1::DirectCandidateV1

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DirectCandidateV1 {
pub multiaddr: Vec<u8>,
pub transport: RouteTransport,
pub scope: CandidateScope,
pub expires_at_ms: u64,
pub required_features: u64
}

Source line: 176.

route_v1::RelayCandidateV1

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RelayCandidateV1 {
pub relay_peer_id: Vec<u8>,
pub destination_multiaddr: Vec<u8>,
pub transport: RouteTransport,
pub reservation_expires_at_ms: u64,
pub operator_domain: Option<String>,
pub relay_ad_digest: [u8; 32]
}

Source line: 185.

route_v1::SupportedProtocolV1

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SupportedProtocolV1 {
pub protocol_id: String,
pub supported_features: u64,
pub required_features: u64
}

Source line: 195.

route_v1::PeerRouteSetUnsignedV1

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PeerRouteSetUnsignedV1 {
pub transport_peer_id: Vec<u8>,
pub route_generation: u64,
pub sequence: u64,
pub issued_at_ms: u64,
pub expires_at_ms: u64,
pub direct_candidates: Vec<DirectCandidateV1>,
pub relay_candidates: Vec<RelayCandidateV1>,
pub supported_protocols: Vec<SupportedProtocolV1>,
pub endpoint_profile: EndpointProfile,
pub service_roles: u16,
pub privacy_profile: PrivacyProfile,
pub critical_features: u64
}

Source line: 202.

route_v1::PeerRouteSetV1

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PeerRouteSetV1 {
pub unsigned: PeerRouteSetUnsignedV1,
pub signature: [u8; 64]
}

Source line: 218.

route_v1::RouteSequence

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RouteSequence {
pub route_generation: u64,
pub sequence: u64
}

Source line: 224.

route_v1::ProtocolRegistryV1

#[derive(Debug, Clone, Default)]
pub struct ProtocolRegistryV1 {

}

Source line: 230.

route_v1::ProtocolRegistryV1::empty

pub fn empty() -> Self;

Source line: 235.

route_v1::ProtocolRegistryV1::with_application_major

Returns a new immutable registry containing one application protocol name/major pair. Registration is separate from route parsing so a peer cannot self-declare support for an unknown major.

pub fn with_application_major(
        mut self,
        name: &str,
        major: u64,
    ) -> Result<Self, Protocol1CodecError>;

Source line: 242.

route_v1::RouteValidationContext

#[derive(Debug, Clone)]
pub struct RouteValidationContext {

}

Source line: 273.

route_v1::RouteValidationContext::alpha

pub fn alpha(now_ms: u64) -> Self;

Source line: 282.

route_v1::RouteValidationContext::try_new

pub fn try_new(
        now_ms: u64,
        maximum_future_skew_ms: u64,
        last_accepted: Option<RouteSequence>,
        supported_features: u64,
        protocol_registry: ProtocolRegistryV1,
    ) -> Result<Self, Protocol1CodecError>;

Source line: 292.

route_v1::PeerRouteSetV1::sign

pub fn sign(
        unsigned: PeerRouteSetUnsignedV1,
        identity: &libp2p::identity::Keypair,
        context: &RouteValidationContext,
    ) -> Result<Self, Protocol1CodecError>;

Source line: 313.

route_v1::PeerRouteSetV1::encode

pub fn encode(&self) -> Result<Vec<u8>, Protocol1CodecError>;

Source line: 344.

route_v1::PeerRouteSetV1::decode_and_validate

pub fn decode_and_validate(
        bytes: &[u8],
        context: &RouteValidationContext,
    ) -> Result<Self, Protocol1CodecError>;

Source line: 358.

route_v1::PeerRouteSetV1::validate

pub fn validate(&self, context: &RouteValidationContext) -> Result<(), Protocol1CodecError>;

Source line: 382.

route_v1::PeerRouteSetV1::digest

pub fn digest(&self) -> Result<[u8; 32], Protocol1CodecError>;

Source line: 440.

route_v1::PeerRouteSetUnsignedV1::encode

pub fn encode(&self) -> Result<Vec<u8>, Protocol1CodecError>;

Source line: 452.

On this page