From ff45e457fd2e44f7a1fefdf2684dc265577f7d61 Mon Sep 17 00:00:00 2001 From: Drew Newberry Date: Wed, 9 Sep 2026 14:58:17 -0700 Subject: [PATCH] refactor(isolation): generalize loopback protocol Signed-off-by: Drew Newberry --- .../src/boundary_protocol.rs | 6 +++--- .../openshell-isolation-interface/src/remote.rs | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/crates/openshell-isolation-interface/src/boundary_protocol.rs b/crates/openshell-isolation-interface/src/boundary_protocol.rs index 37d2b2749..2f4a6ff3b 100644 --- a/crates/openshell-isolation-interface/src/boundary_protocol.rs +++ b/crates/openshell-isolation-interface/src/boundary_protocol.rs @@ -484,7 +484,7 @@ pub enum Request { cols: u16, rows: u16, }, - PortForward { + LoopbackConnect { host: std::net::IpAddr, port: u16, }, @@ -593,8 +593,8 @@ impl fmt::Debug for Request { .field("cols", cols) .field("rows", rows) .finish(), - Self::PortForward { host, port } => formatter - .debug_struct("PortForward") + Self::LoopbackConnect { host, port } => formatter + .debug_struct("LoopbackConnect") .field("host", host) .field("port", port) .finish(), diff --git a/crates/openshell-isolation-interface/src/remote.rs b/crates/openshell-isolation-interface/src/remote.rs index d883d8489..df039efe2 100644 --- a/crates/openshell-isolation-interface/src/remote.rs +++ b/crates/openshell-isolation-interface/src/remote.rs @@ -19,7 +19,7 @@ use std::time::{Duration, Instant}; use crate::AgentSpec; use crate::contract::{ BackendError, BoundBoundary, BoundaryDuplexStream, BoundaryExec, BoundaryExitStatus, - BoundaryInput, BoundaryOutput, BoundaryPortForward, BoundaryProcess, BoundarySignal, + BoundaryInput, BoundaryLoopbackConnector, BoundaryOutput, BoundaryProcess, BoundarySignal, BoundaryTerminal, ConfirmedBoundary, DnsMediationSource, ExecSession, ExecSpec, IsolationBackend, LoopbackTarget, MediatedDnsQuery, MediationTiming, NetworkMediationSource, NetworkOpenResult, PendingNetworkOpen, ProcessAttachment, ReadyBoundary, RunningBoundary, @@ -396,7 +396,7 @@ impl ReadyBoundary for RemoteReady { provider_credentials: self.provider_credentials, boundary_revision: tokio::sync::Mutex::new(provider_env_revision), }), - port_forward: Arc::new(RemotePortForward { + loopback_connector: Arc::new(RemoteLoopbackConnector { client: self.client, }), })) @@ -406,7 +406,7 @@ impl ReadyBoundary for RemoteReady { struct RemoteRunning { process: Arc, exec: Arc, - port_forward: Arc, + loopback_connector: Arc, } impl RunningBoundary for RemoteRunning { @@ -418,8 +418,8 @@ impl RunningBoundary for RemoteRunning { self.exec.clone() } - fn port_forward(&self) -> Arc { - self.port_forward.clone() + fn loopback_connector(&self) -> Arc { + self.loopback_connector.clone() } } @@ -591,16 +591,16 @@ impl BoundaryExec for RemoteExec { } } -struct RemotePortForward { +struct RemoteLoopbackConnector { client: Arc, } #[async_trait] -impl BoundaryPortForward for RemotePortForward { +impl BoundaryLoopbackConnector for RemoteLoopbackConnector { async fn connect(&self, target: LoopbackTarget) -> Result { let (stream, response) = self .client - .call_stream(Request::PortForward { + .call_stream(Request::LoopbackConnect { host: target.host(), port: target.port(), })