Enum netstack3_core::filter::Action
source · 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.