Skip to main content

rns_net/
lib.rs

1//! rns-net: Network node for Reticulum.
2//!
3//! Drives `rns-core::TransportEngine` with real TCP/UDP sockets and threads.
4//! Reads standard Python RNS config files, opens TCP server/client, UDP, and
5//! Local interfaces, persists identity and known destinations.
6
7pub mod common;
8pub mod hdlc;
9pub mod kiss;
10pub mod rnode_kiss;
11pub mod event;
12pub use common::time;
13pub mod interface;
14pub mod driver;
15pub mod node;
16pub use common::config;
17pub mod storage;
18pub mod ifac;
19pub mod serial;
20pub mod md5;
21pub mod pickle;
22pub mod rpc;
23pub mod announce_cache;
24pub use common::compressor;
25pub use common::link_manager;
26pub mod management;
27#[cfg(feature = "iface-local")]
28pub mod shared_client;
29pub use common::destination;
30pub mod holepunch;
31pub mod discovery;
32
33pub use driver::Callbacks;
34pub use event::{
35    Event, QueryRequest, QueryResponse,
36    InterfaceStatsResponse, SingleInterfaceStat,
37    PathTableEntry, RateTableEntry, NextHopResponse, BlackholeInfo,
38    LocalDestinationEntry, LinkInfoEntry, ResourceInfoEntry,
39};
40pub use node::{IfacConfig, InterfaceConfig, NodeConfig, RnsNode, SendError};
41pub use interface::{
42    InterfaceConfigData, InterfaceFactory, StartContext, StartResult, SubInterface,
43};
44pub use interface::registry::InterfaceRegistry;
45#[cfg(feature = "iface-tcp")]
46pub use interface::tcp::{TcpClientFactory, TcpClientConfig};
47#[cfg(feature = "iface-tcp")]
48pub use interface::tcp_server::{TcpServerFactory, TcpServerConfig};
49#[cfg(feature = "iface-udp")]
50pub use interface::udp::{UdpFactory, UdpConfig};
51#[cfg(feature = "iface-serial")]
52pub use interface::serial_iface::{SerialFactory, SerialIfaceConfig};
53#[cfg(feature = "iface-kiss")]
54pub use interface::kiss_iface::{KissFactory, KissIfaceConfig};
55#[cfg(feature = "iface-pipe")]
56pub use interface::pipe::{PipeFactory, PipeConfig};
57#[cfg(feature = "iface-local")]
58pub use interface::local::{LocalServerFactory, LocalClientFactory, LocalServerConfig, LocalClientConfig};
59#[cfg(feature = "iface-backbone")]
60pub use interface::backbone::{BackboneInterfaceFactory, BackboneConfig, BackboneClientConfig};
61#[cfg(feature = "iface-auto")]
62pub use interface::auto::{AutoFactory, AutoConfig};
63#[cfg(feature = "iface-i2p")]
64pub use interface::i2p::{I2pFactory, I2pConfig};
65#[cfg(feature = "iface-rnode")]
66pub use interface::rnode::{RNodeFactory, RNodeConfig, RNodeSubConfig};
67#[cfg(feature = "iface-local")]
68pub use shared_client::SharedClientConfig;
69pub use config::RnsConfig;
70pub use ifac::IfacState;
71pub use serial::Parity;
72pub use storage::{StoragePaths, KnownDestination};
73pub use rpc::{RpcAddr, RpcServer, RpcClient};
74pub use link_manager::{LinkManager, LinkManagerAction};
75pub use management::ManagementConfig;
76pub use destination::{Destination, AnnouncedIdentity, GroupKeyError};
77
78// Re-export commonly used types from rns-core
79pub use rns_core::transport::types::InterfaceId;
80pub use rns_core::types::{DestHash, IdentityHash, LinkId, PacketHash, DestinationType, Direction, ProofStrategy};
81pub use rns_core::constants::{
82    MODE_FULL, MODE_POINT_TO_POINT, MODE_ACCESS_POINT,
83    MODE_ROAMING, MODE_BOUNDARY, MODE_GATEWAY,
84};