pub struct FunnelOptions {
pub funnel_only: bool,
pub tls: Option<TlsAcceptor>,
}Expand description
Options for Server::listen_funnel — the Rust analog of Go’s variadic ...FunnelOption
(FunnelOnly, FunnelTLSConfig).
Go models funnel knobs as option functions; the Rust-idiomatic shape is one options value with
Go-named constructors. Build it with FunnelOptions::funnel_only / FunnelOptions::with_tls
or struct-literal syntax.
Fields§
§funnel_only: boolReject tailnet-internal connections, serving only public Funnel ingress (Go FunnelOnly()).
tls: Option<TlsAcceptor>Bring-your-own TLS termination (Go FunnelTLSConfig(*tls.Config)). None (the default) lets
the engine terminate with the node’s own *.ts.net certificate.
Engine gap (tracked). The current engine Device::listen_funnel
always builds its own acceptor from the node cert and does not yet thread a caller-supplied
one; a non-None value here is surfaced (a warn!) and otherwise ignored until the engine
accepts an override. See docs/TSNET_FACADE_DESIGN.md §“Funnel”.
Implementations§
Source§impl FunnelOptions
impl FunnelOptions
Sourcepub fn funnel_only() -> Self
pub fn funnel_only() -> Self
Go FunnelOnly() — serve only public Funnel ingress.
Sourcepub fn with_tls(self, acceptor: TlsAcceptor) -> Self
pub fn with_tls(self, acceptor: TlsAcceptor) -> Self
Go FunnelTLSConfig(conf) — supply the TLS acceptor to terminate Funnel ingress with.
Trait Implementations§
Source§impl Default for FunnelOptions
impl Default for FunnelOptions
Source§fn default() -> FunnelOptions
fn default() -> FunnelOptions
Source§impl From<FunnelOptions> for FunnelOptions
impl From<FunnelOptions> for FunnelOptions
Source§fn from(o: FunnelOptions) -> Self
fn from(o: FunnelOptions) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for FunnelOptions
impl !UnwindSafe for FunnelOptions
impl Freeze for FunnelOptions
impl Send for FunnelOptions
impl Sync for FunnelOptions
impl Unpin for FunnelOptions
impl UnsafeUnpin for FunnelOptions
Blanket Implementations§
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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