HttpFilterConfig

Struct HttpFilterConfig 

Source
pub struct HttpFilterConfig {
    pub port_filter: Option<PortFilter>,
    pub ip_filter: Option<IpFilter>,
    pub subnet_filter: Option<SubnetFilter>,
    pub mode: FilterMode,
}
Expand description

Combined filter configuration

Combines port, IP, and subnet filters with a filter mode (Allow/Deny). All enabled filters must pass for a packet to be processed.

§Examples

use huginn_net_http::{FilterConfig, FilterMode, PortFilter, SubnetFilter};

let filter = FilterConfig::new()
    .mode(FilterMode::Allow)
    .with_port_filter(PortFilter::new().destination(443))
    .with_subnet_filter(
        SubnetFilter::new()
            .allow("192.168.0.0/16")
            .unwrap()
    );

Fields§

§port_filter: Option<PortFilter>§ip_filter: Option<IpFilter>§subnet_filter: Option<SubnetFilter>§mode: FilterMode

Implementations§

Source§

impl FilterConfig

Source

pub fn new() -> FilterConfig

Create a new empty filter configuration

Source

pub fn mode(self, mode: FilterMode) -> FilterConfig

Set filter mode (Allow/Deny)

§Examples
use huginn_net_http::{FilterConfig, FilterMode};

// Allowlist mode (default) - only matching packets pass
let filter = FilterConfig::new().mode(FilterMode::Allow);

// Denylist mode - matching packets are blocked
let filter = FilterConfig::new().mode(FilterMode::Deny);
Source

pub fn with_port_filter(self, filter: PortFilter) -> FilterConfig

Add port filter

§Examples
use huginn_net_http::{FilterConfig, PortFilter};

let filter = FilterConfig::new()
    .with_port_filter(PortFilter::new().destination(443));
Source

pub fn with_ip_filter(self, filter: IpFilter) -> FilterConfig

Add IP filter

§Examples
use huginn_net_http::{FilterConfig, IpFilter};

let filter = FilterConfig::new()
    .with_ip_filter(
        IpFilter::new()
            .allow("8.8.8.8")
            .unwrap()
    );
Source

pub fn with_subnet_filter(self, filter: SubnetFilter) -> FilterConfig

Add subnet filter

§Examples
use huginn_net_http::{FilterConfig, SubnetFilter};

let filter = FilterConfig::new()
    .with_subnet_filter(
        SubnetFilter::new()
            .allow("192.168.0.0/16")
            .unwrap()
    );
Source

pub fn should_process( &self, src_ip: &IpAddr, dst_ip: &IpAddr, src_port: u16, dst_port: u16, ) -> bool

Check if packet should be processed based on filters (userspace filtering)

This method performs filtering in userspace after packets reach the application. It extracts IP addresses and ports from packet headers and applies the configured filters (port, IP, subnet) according to the filter mode (Allow/Deny).

§Returns
  • true: Packet passes all filters (should be processed)
  • false: Packet blocked by filters (should be dropped)
§Logic
  • If no filters are configured, all packets pass
  • In Allow mode: packet must match ALL configured filters
  • In Deny mode: packet must NOT match ALL configured filters

Trait Implementations§

Source§

impl Clone for FilterConfig

Source§

fn clone(&self) -> FilterConfig

Returns a duplicate 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 Debug for FilterConfig

Source§

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

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

impl Default for FilterConfig

Source§

fn default() -> FilterConfig

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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>,

Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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