pub struct IcmpRateLimiter { /* private fields */ }Expand description
Rate limiter for ICMP Packet Too Big messages.
Tracks the last time an ICMP PTB was sent to each source address and enforces a minimum interval between messages to prevent floods.
Implementations§
Source§impl IcmpRateLimiter
impl IcmpRateLimiter
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new rate limiter.
Default: max 10 ICMP/sec per source (100ms interval).
Sourcepub fn with_interval(min_interval: Duration) -> Self
pub fn with_interval(min_interval: Duration) -> Self
Create a rate limiter with custom interval.
Sourcepub fn should_send(&mut self, src_addr: Ipv6Addr) -> bool
pub fn should_send(&mut self, src_addr: Ipv6Addr) -> bool
Check if we should send an ICMP PTB to this source address.
Returns true if enough time has passed since the last ICMP to this source, or if this is the first ICMP to this source.
If true is returned, the internal state is updated to record this send.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for IcmpRateLimiter
impl RefUnwindSafe for IcmpRateLimiter
impl Send for IcmpRateLimiter
impl Sync for IcmpRateLimiter
impl Unpin for IcmpRateLimiter
impl UnsafeUnpin for IcmpRateLimiter
impl UnwindSafe for IcmpRateLimiter
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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