Skip to main content

TransportEngine

Struct TransportEngine 

Source
pub struct TransportEngine { /* private fields */ }
Expand description

The core transport/routing engine.

Maintains routing tables and processes packets without performing any I/O. Returns Vec<TransportAction> that the caller must execute.

Implementations§

Source§

impl TransportEngine

Source

pub fn new(config: TransportConfig) -> Self

Source

pub fn register_interface(&mut self, info: InterfaceInfo)

Source

pub fn deregister_interface(&mut self, id: InterfaceId)

Source

pub fn register_destination(&mut self, dest_hash: [u8; 16], dest_type: u8)

Source

pub fn deregister_destination(&mut self, dest_hash: &[u8; 16])

Source

pub fn has_path(&self, dest_hash: &[u8; 16]) -> bool

Source

pub fn hops_to(&self, dest_hash: &[u8; 16]) -> Option<u8>

Source

pub fn next_hop(&self, dest_hash: &[u8; 16]) -> Option<[u8; 16]>

Source

pub fn next_hop_interface(&self, dest_hash: &[u8; 16]) -> Option<InterfaceId>

Source

pub fn mark_path_unresponsive(&mut self, dest_hash: &[u8; 16])

Source

pub fn mark_path_responsive(&mut self, dest_hash: &[u8; 16])

Source

pub fn path_is_unresponsive(&self, dest_hash: &[u8; 16]) -> bool

Source

pub fn expire_path(&mut self, dest_hash: &[u8; 16])

Source

pub fn blackhole_identity( &mut self, identity_hash: [u8; 16], now: f64, duration_hours: Option<f64>, reason: Option<String>, )

Add an identity hash to the blackhole list.

Source

pub fn unblackhole_identity(&mut self, identity_hash: &[u8; 16]) -> bool

Remove an identity hash from the blackhole list.

Source

pub fn is_blackholed(&self, identity_hash: &[u8; 16], now: f64) -> bool

Check if an identity hash is blackholed (and not expired).

Source

pub fn blackholed_entries( &self, ) -> impl Iterator<Item = (&[u8; 16], &BlackholeEntry)>

Get all blackhole entries (for queries).

Source

pub fn handle_tunnel( &mut self, tunnel_id: [u8; 32], interface: InterfaceId, now: f64, ) -> Vec<TransportAction>

Handle a validated tunnel synthesis — create new or reattach.

Returns actions for any restored paths.

Source

pub fn synthesize_tunnel( &self, identity: &Identity, interface_id: InterfaceId, rng: &mut dyn Rng, ) -> Vec<TransportAction>

Synthesize a tunnel on an interface.

identity: the transport identity (must have private key for signing) interface_id: which interface to send the synthesis on rng: random number generator

Returns TunnelSynthesize action to send the synthesis packet.

Source

pub fn void_tunnel_interface(&mut self, tunnel_id: &[u8; 32])

Void a tunnel’s interface connection (tunnel disconnected).

Source

pub fn tunnel_table(&self) -> &TunnelTable

Access the tunnel table for queries.

Source

pub fn handle_inbound( &mut self, raw: &[u8], iface: InterfaceId, now: f64, rng: &mut dyn Rng, ) -> Vec<TransportAction>

Process an inbound raw packet from a network interface.

Returns a list of actions for the caller to execute.

Source

pub fn handle_outbound( &mut self, packet: &RawPacket, dest_type: u8, attached_interface: Option<InterfaceId>, now: f64, ) -> Vec<TransportAction>

Route an outbound packet.

Source

pub fn tick(&mut self, now: f64, _rng: &mut dyn Rng) -> Vec<TransportAction>

Periodic maintenance. Call regularly (e.g., every 250ms).

Source

pub fn handle_path_request( &mut self, data: &[u8], interface_id: InterfaceId, now: f64, ) -> Vec<TransportAction>

Handle an incoming path request.

Source

pub fn path_table_entries( &self, ) -> impl Iterator<Item = (&[u8; 16], &PathEntry)>

Iterate over all path table entries.

Source

pub fn interface_count(&self) -> usize

Number of registered interfaces.

Number of link table entries.

Source

pub fn rate_limiter(&self) -> &AnnounceRateLimiter

Access the rate limiter for reading rate table entries.

Source

pub fn interface_info(&self, id: &InterfaceId) -> Option<&InterfaceInfo>

Get interface info by id.

Source

pub fn drop_path(&mut self, dest_hash: &[u8; 16]) -> bool

Drop a path from the path table.

Source

pub fn drop_all_via(&mut self, transport_hash: &[u8; 16]) -> usize

Drop all paths that route via a given transport hash.

Source

pub fn drop_announce_queues(&mut self)

Drop all pending announce retransmissions and bandwidth queues.

Source

pub fn identity_hash(&self) -> Option<&[u8; 16]>

Get the transport identity hash.

Source

pub fn transport_enabled(&self) -> bool

Whether transport is enabled.

Source

pub fn config(&self) -> &TransportConfig

Access the transport configuration.

Source

pub fn get_path_table( &self, max_hops: Option<u8>, ) -> Vec<([u8; 16], f64, [u8; 16], u8, f64, String)>

Get path table entries as tuples for management queries. Returns (dest_hash, timestamp, next_hop, hops, expires, interface_name).

Source

pub fn get_rate_table(&self) -> Vec<([u8; 16], f64, u32, f64, Vec<f64>)>

Get rate table entries as tuples for management queries. Returns (dest_hash, last, rate_violations, blocked_until, timestamps).

Source

pub fn get_blackholed(&self) -> Vec<([u8; 16], f64, f64, Option<String>)>

Get blackholed identities as tuples for management queries. Returns (identity_hash, created, expires, reason).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.