Add Unix domain control socket for runtime observability

Add a Unix domain socket interface for querying node state at runtime.
A spawned tokio task accepts connections and communicates with the main
event loop via mpsc/oneshot channels, keeping all Node access
single-threaded.

Includes:
- src/control/ module with socket lifecycle, JSON protocol, and 11
  query handlers (status, peers, links, tree, sessions, bloom, mmp,
  cache, connections, transports, routing)
- Separate fipsctl binary for CLI queries (fipsctl show <command>)
- ControlConfig in node configuration (enabled, socket_path)
- Integration into the main select! event loop
This commit is contained in:
Johnathan Corgan
2026-02-22 20:53:00 +00:00
parent 92d5df8037
commit 0a6d433d32
12 changed files with 980 additions and 3 deletions
+5
View File
@@ -17,6 +17,7 @@ rand = "0.8"
thiserror = "2.0"
bech32 = "0.11"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
dirs = "6.0"
hex = "0.4"
@@ -35,6 +36,10 @@ socket2 = { version = "0.5", features = ["all"] }
tempfile = "3.15"
criterion = { version = "0.5", features = ["html_reports"] }
[[bin]]
name = "fipsctl"
path = "src/bin/fipsctl.rs"
[[bench]]
name = "bloom"
harness = false