Struct QuicMitmIngress
pub struct QuicMitmIngress { /* private fields */ }quic and std only.Expand description
Coordinate migration between platform flows without sharing connection endpoints.
Use one instance per trusted policy identity boundary. Install it with
super::super::PeekQuicClientHelloService::with_router and pass the same instance to
super::QuicMitmRelay::with_migration_ingress. Each intercepted connection registers its
own native endpoint. CID matches are routing hints, never authentication; a stale match
is dropped rather than passed to policy. Scope admitted MITM work with run_connection.
Implementations§
§impl QuicMitmIngress
impl QuicMitmIngress
pub fn new(
scope: impl Into<WeakScope>,
config: QuicMitmIngressConfig,
) -> QuicMitmIngress
pub fn new( scope: impl Into<WeakScope>, config: QuicMitmIngressConfig, ) -> QuicMitmIngress
Configure one policy identity boundary. Use an application/provider scope, not a platform flow’s scope: logical connections must survive the original flow closing.
pub async fn run_connection<O>(
&self,
connection: impl Future<Output = Result<O, Box<dyn Error + Send + Sync>>> + Send + 'static,
) -> Result<O, Box<dyn Error + Send + Sync>>where
O: Send + 'static,
pub async fn run_connection<O>(
&self,
connection: impl Future<Output = Result<O, Box<dyn Error + Send + Sync>>> + Send + 'static,
) -> Result<O, Box<dyn Error + Send + Sync>>where
O: Send + 'static,
Run an admitted MITM connection in the provider scope, independently of its first
platform flow. Call only after policy selects interception; raw forwarding should
retain its caller’s cancellation. Move admission permits and other lifetime guards
into connection, so cancelling the caller cannot release them prematurely.
Trait Implementations§
§impl Clone for QuicMitmIngress
impl Clone for QuicMitmIngress
§fn clone(&self) -> QuicMitmIngress
fn clone(&self) -> QuicMitmIngress
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for QuicMitmIngress
impl Debug for QuicMitmIngress
§impl QuicPeekRouter<()> for QuicMitmIngress
impl QuicPeekRouter<()> for QuicMitmIngress
type Route = QuicMitmRoute
fn route<Socket>(
&self,
socket: &Socket,
metadata: &DatagramMetadata,
data: &[u8],
) -> Result<Option<QuicMitmRoute>, Box<dyn Error + Send + Sync>>where
Socket: DatagramSocket,
Auto Trait Implementations§
impl !RefUnwindSafe for QuicMitmIngress
impl !UnwindSafe for QuicMitmIngress
impl Forget for QuicMitmIngress
impl Freeze for QuicMitmIngress
impl Move for QuicMitmIngress
impl Send for QuicMitmIngress
impl Sync for QuicMitmIngress
impl Unpin for QuicMitmIngress
impl UnsafeUnpin for QuicMitmIngress
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more