pub enum Action<I, DeviceClass, RuleInfo>
where I: IpExt,
{ Accept, Drop, Jump(UninstalledRoutine<I, DeviceClass, RuleInfo>), Return, TransparentProxy(TransparentProxy<I>), }
Expand description

The action to take on a packet.

Variants§

§

Accept

Accept the packet.

This is a terminal action for the current installed routine, i.e. no further rules will be evaluated for this packet in the installed routine (or any subroutines) in which this rule is installed. Subsequent routines installed on the same hook will still be evaluated.

§

Drop

Drop the packet.

This is a terminal action for the current hook, i.e. no further rules will be evaluated for this packet, even in other routines on the same hook.

§

Jump(UninstalledRoutine<I, DeviceClass, RuleInfo>)

Jump from the current routine to the specified uninstalled routine.

§

Return

Stop evaluation of the current routine and return to the calling routine (the routine from which the current routine was jumped), continuing evaluation at the next rule.

If invoked in an installed routine, equivalent to Accept, given packets are accepted by default in the absence of any matching rules.

§

TransparentProxy(TransparentProxy<I>)

Redirect the packet to a local socket without changing the packet header in any way.

This is a terminal action for the current hook, i.e. no further rules will be evaluated for this packet, even in other routines on the same hook. However, note that this does not preclude actions on other hooks from having an effect on this packet; for example, a packet that hits TransparentProxy in INGRESS could still be dropped in LOCAL_INGRESS.

This action is only valid in the INGRESS hook. This action is also only valid in a rule that ensures the presence of a TCP or UDP header by matching on the transport protocol, so that the packet can be properly dispatched.

Also note that transparently proxied packets will only be delivered to sockets with the transparent socket option enabled.

Trait Implementations§

source§

impl<I, DeviceClass, RuleInfo> Clone for Action<I, DeviceClass, RuleInfo>
where I: IpExt, DeviceClass: Clone, RuleInfo: Clone,

source§

fn clone(&self) -> Action<I, DeviceClass, RuleInfo>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<I, DeviceClass, RuleInfo> Debug for Action<I, DeviceClass, RuleInfo>
where I: IpExt, DeviceClass: Debug,

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<I, DeviceClass> Inspectable for Action<I, DeviceClass, ()>
where I: IpExt, DeviceClass: Debug,

source§

fn record<Inspector>(&self, inspector: &mut Inspector)
where Inspector: Inspector,

Records this value into inspector.

Auto Trait Implementations§

§

impl<I, DeviceClass, RuleInfo> Freeze for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, <I as Ip>::Addr: Freeze,

§

impl<I, DeviceClass, RuleInfo> RefUnwindSafe for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, <I as Ip>::Addr: RefUnwindSafe, RuleInfo: RefUnwindSafe, DeviceClass: RefUnwindSafe, <I as IpProtoExt>::Proto: RefUnwindSafe,

§

impl<I, DeviceClass, RuleInfo> Send for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, RuleInfo: Sync + Send, DeviceClass: Sync + Send,

§

impl<I, DeviceClass, RuleInfo> Sync for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, RuleInfo: Sync + Send, DeviceClass: Sync + Send,

§

impl<I, DeviceClass, RuleInfo> Unpin for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, <I as Ip>::Addr: Unpin,

§

impl<I, DeviceClass, RuleInfo> UnwindSafe for Action<I, DeviceClass, RuleInfo>
where I: IcmpIpExt + IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + EthernetIpExt + 'static, <I as Ip>::Addr: UnwindSafe + RefUnwindSafe, RuleInfo: RefUnwindSafe, DeviceClass: RefUnwindSafe, <I as IpProtoExt>::Proto: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<Id, CC, BC> TimerHandler<BC, Id> for CC
where Id: HandleableTimer<CC, BC>,

source§

fn handle_timer(&mut self, bindings_ctx: &mut BC, id: Id)

Handle a timer firing.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<B, A> LockBefore<B> for A
where B: LockAfter<A>,