Phase 4 of the teaching demo: the daemon now brings up its own sessions. - New dialer task per configured peer: connect with a timeout, run the same FSM as the passive side, back off exponentially (from connect_retry_seconds, capped at two minutes) and retry forever. Stays idle while a session with the same remote IP and ASN already exists. - The peer's OPEN must carry the configured ASN, otherwise the session is refused with a Bad Peer AS notification. Inbound connections from a configured peer's address get the same check plus the configured name and hold time. - SessionRegistry tracks configured peers and their dial state (Idle / Connecting / Backoff with last error and retry time). - /api/peers merges configured peers with live sessions so the page shows peers that are down, why, and when the next attempt is; unconfigured inbound sessions are listed after them. - fake_peer gains --listen so it can stand in for a router the daemon dials. - Integration tests: dial and establish, reconnect after the peer closes, wrong ASN refused, inbound from a configured address checked and named. Not implemented: RFC 4271 §6.8 collision detection; a real router on the other end resolves the rare race by closing one connection. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
14 lines
228 B
Rust
14 lines
228 B
Rust
pub mod advertise;
|
|
pub mod config;
|
|
pub mod connection;
|
|
pub mod dialer;
|
|
pub mod fsm;
|
|
pub mod metrics;
|
|
pub mod server;
|
|
pub mod session;
|
|
pub mod tracing;
|
|
|
|
pub mod proto {
|
|
include!(concat!(env!("OUT_DIR"), "/protos/mod.rs"));
|
|
}
|