mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 16:24:45 +00:00
Migrate the FSP end-to-end session subsystem into src/proto/fsp/ following the established sans-IO shape, and retire the src/protocol grab-bag now that FSP was its last occupant. Relocate the FSP session wire (node/session_wire.rs plus the FSP message types from protocol/session.rs) into proto/fsp/wire.rs. Hoist the pure decision logic into proto/fsp/core.rs over plain-data SessionSnapshots returning an ordered FspAction list the shell drives: session-rekey policy, msg3-resend classification, post-decrypt epoch reaction, setup/dual-init tie-break, coords/path-MTU emit-policy, bounded pending-queue, and IPv6 ECN. The crypto-owning SessionEntry stays shell-side in node/session.rs (matching the FMP ActivePeer pattern); proto/fsp is wire + core + limits only, with no proto->noise dependency and no crypto. Move the coords helpers to proto/stp/ (they serialize TreeCoordinate), and split SessionMessageType: the encrypted-inner 0x10-0x1F variants stay in proto/fsp/wire.rs while the 0x20-0x2F routing signals become a new RoutingSignalType in proto/routing/wire.rs. Migrate the session-MMP shell adapter, which continues to drive proto/mmp/. Retire src/protocol: LinkMessageType and SessionDatagram move to a new shared proto/link.rs, ProtocolError becomes proto::Error (relocated verbatim), the deprecated MessageType alias and the unimported PROTOCOL_VERSION are dropped, and src/protocol/ is deleted along with its lib.rs module declaration. Behavior-neutral: wire bytes unchanged, oracle tests pass unedited except mod-path relocation; adds rekey/epoch characterization tests and pure poll/emit-policy core tests.
99 lines
3.4 KiB
Rust
99 lines
3.4 KiB
Rust
//! FIPS: Free Internetworking Peering System
|
|
//!
|
|
//! A distributed, decentralized network routing protocol for mesh nodes
|
|
//! connecting over arbitrary transports.
|
|
|
|
// Name the `alloc` crate directly so the sans-IO protocol cores can spell their
|
|
// heap-type imports in `no_std`-forward form (`alloc::sync::Arc`,
|
|
// `alloc::collections::BTreeMap`). The crate remains `std`; this only reduces the
|
|
// distance to extracting the pure cores into a `no_std` crate later.
|
|
extern crate alloc;
|
|
|
|
pub mod cache;
|
|
pub mod config;
|
|
pub mod control;
|
|
pub mod discovery;
|
|
#[cfg(target_os = "linux")]
|
|
pub mod gateway;
|
|
pub mod identity;
|
|
pub mod mmp;
|
|
pub mod node;
|
|
pub mod noise;
|
|
pub mod peer;
|
|
pub mod perf_profile;
|
|
pub(crate) mod proto;
|
|
#[cfg(test)]
|
|
pub(crate) mod testutil;
|
|
pub mod transport;
|
|
pub mod upper;
|
|
pub mod utils;
|
|
pub mod version;
|
|
|
|
// Re-export identity types
|
|
pub use identity::{
|
|
AuthChallenge, AuthResponse, FipsAddress, Identity, IdentityError, NodeAddr, PeerIdentity,
|
|
decode_npub, decode_nsec, decode_secret, encode_npub, encode_nsec,
|
|
};
|
|
|
|
// Re-export config types
|
|
pub use config::{Config, ConfigError, IdentityConfig, NymConfig, TorConfig, UdpConfig};
|
|
pub use upper::config::{DnsConfig, TunConfig};
|
|
|
|
// Re-export discovery types
|
|
pub use discovery::{BootstrapHandoffResult, EstablishedTraversal};
|
|
|
|
// Re-export tree types (relocated from tree:: to proto::stp)
|
|
pub use proto::stp::{CoordEntry, ParentDeclaration, TreeCoordinate, TreeError, TreeState};
|
|
|
|
// Re-export bloom filter types (relocated from bloom:: to proto::bloom)
|
|
pub use proto::bloom::{BloomError, BloomFilter, BloomState};
|
|
|
|
// Re-export transport types
|
|
pub use transport::udp::UdpTransport;
|
|
pub use transport::{
|
|
DiscoveredPeer, Link, LinkDirection, LinkId, LinkState, LinkStats, PacketRx, PacketTx,
|
|
ReceivedPacket, Transport, TransportAddr, TransportError, TransportHandle, TransportId,
|
|
TransportState, TransportType, packet_channel,
|
|
};
|
|
|
|
// Re-export link-layer types (relocated from protocol:: to proto::link)
|
|
pub use proto::link::{LinkMessageType, SessionDatagram};
|
|
|
|
// Re-export the shared protocol error (relocated from protocol:: to proto::Error)
|
|
pub use proto::Error;
|
|
|
|
// Re-export FSP session wire types (relocated from protocol:: to proto::fsp)
|
|
pub use proto::fsp::{SessionAck, SessionFlags, SessionMessageType, SessionSetup};
|
|
|
|
// Re-export STP wire types (relocated from protocol:: to proto::stp)
|
|
pub use proto::stp::TreeAnnounce;
|
|
|
|
// Re-export bloom wire types (relocated from protocol:: to proto::bloom)
|
|
pub use proto::bloom::FilterAnnounce;
|
|
|
|
// Re-export discovery wire types (relocated from protocol:: to proto::discovery)
|
|
pub use proto::discovery::{LookupRequest, LookupResponse};
|
|
|
|
// Re-export routing wire types (relocated from protocol:: to proto::routing)
|
|
pub use proto::routing::{
|
|
COORDS_REQUIRED_SIZE, CoordsRequired, MTU_EXCEEDED_SIZE, MtuExceeded, PathBroken,
|
|
};
|
|
|
|
// Re-export FMP link-framing wire type (relocated from protocol:: to proto::fmp)
|
|
pub use proto::fmp::HandshakeMessageType;
|
|
|
|
// Re-export cache types
|
|
pub use cache::{CacheEntry, CacheError, CacheStats, CoordCache};
|
|
|
|
// Re-export FMP tie-break helper (relocated from peer:: to proto::fmp)
|
|
pub use proto::fmp::cross_connection_winner;
|
|
|
|
// Re-export peer types
|
|
pub use peer::{
|
|
ActivePeer, ConnectivityState, HandshakeState, PeerConnection, PeerError, PeerSlot,
|
|
PromotionResult,
|
|
};
|
|
|
|
// Re-export node types
|
|
pub use node::{Node, NodeError, NodeState, UpdatePeersOutcome};
|