Skip to main content

fips_core/
lib.rs

1//! FIPS: Free Internetworking Peering System
2//!
3//! A distributed, decentralized network routing protocol for mesh nodes
4//! connecting over arbitrary transports.
5
6pub mod bloom;
7pub mod cache;
8pub mod config;
9pub mod control;
10pub mod discovery;
11pub mod endpoint;
12#[cfg(target_os = "linux")]
13pub mod gateway;
14pub mod identity {
15    pub use fips_identity::*;
16}
17pub mod mmp;
18pub mod node;
19pub mod noise;
20pub mod peer;
21pub(crate) mod perf_profile;
22pub mod protocol;
23pub(crate) mod time;
24pub mod transport;
25pub mod tree;
26pub mod upper;
27pub mod utils;
28pub mod version;
29
30// Re-export identity types
31pub use fips_identity::{
32    AuthChallenge, AuthResponse, FipsAddress, Identity, IdentityError, NodeAddr, PeerIdentity,
33    decode_npub, decode_nsec, decode_secret, encode_npub, encode_nsec,
34};
35
36// Re-export config types
37#[cfg(feature = "sim-transport")]
38pub use config::SimTransportConfig;
39pub use config::{Config, ConfigError, IdentityConfig, TorConfig, UdpConfig};
40pub use upper::config::{DnsConfig, TunConfig};
41
42// Re-export discovery types
43pub use discovery::{BootstrapHandoffResult, EstablishedTraversal};
44
45// Re-export tree types
46pub use tree::{CoordEntry, ParentDeclaration, TreeCoordinate, TreeError, TreeState};
47
48// Re-export bloom filter types
49pub use bloom::{BloomError, BloomFilter, BloomState};
50
51// Re-export transport types
52#[cfg(feature = "sim-transport")]
53pub use transport::sim::{
54    SimLink, SimNetwork, SimNetworkStats, SimNodeBehavior, SimTransport, register_sim_network,
55    unregister_sim_network,
56};
57pub use transport::udp::UdpTransport;
58pub use transport::{
59    DiscoveredPeer, Link, LinkDirection, LinkId, LinkState, LinkStats, PacketRx, PacketTx,
60    ReceivedPacket, Transport, TransportAddr, TransportError, TransportHandle, TransportId,
61    TransportState, TransportType, packet_channel,
62};
63
64// Re-export protocol types
65pub use protocol::{
66    CoordsRequired, FilterAnnounce, HandshakeMessageType, LinkMessageType, LookupRequest,
67    LookupResponse, PathBroken, ProtocolError, SessionAck, SessionDatagram, SessionFlags,
68    SessionMessageType, SessionSetup, TreeAnnounce,
69};
70
71// Re-export cache types
72pub use cache::{CacheEntry, CacheError, CacheStats, CoordCache};
73
74// Re-export peer types
75pub use peer::{
76    ActivePeer, ConnectivityState, HandshakeState, PeerConnection, PeerError, PeerSlot,
77    PromotionResult, cross_connection_winner,
78};
79
80// Re-export node types
81pub use endpoint::{FipsEndpoint, FipsEndpointBuilder, FipsEndpointError, FipsEndpointMessage};
82pub use node::{ExternalPacketIo, Node, NodeDeliveredPacket, NodeError, NodeState};