Struct Queue

Source
pub struct Queue<T> { /* private fields */ }
Expand description

Opaque struct Queue: abstracts an NFLOG queue

Implementations§

Source§

impl<T: Send> Queue<T>

Source

pub fn new(data: T) -> Queue<T>

Creates a new, uninitialized, Queue.

Source

pub fn open(&mut self)

Opens a NFLOG handler

This function obtains a netfilter queue connection handle. When you are finished with the handle returned by this function, you should destroy it by calling close(). A new netlink connection is obtained internally and associated with the queue connection handle returned.

Source

pub fn close(&mut self)

Closes a NFLOG handler

This function closes the nfqueue handler and free associated resources.

Source

pub fn bind(&self, pf: c_int) -> i32

Bind a nfqueue handler to a given protocol family

Binds the given queue connection handle to process packets belonging to the given protocol family (ie. PF_INET, PF_INET6, etc).

Arguments

  • pf - Protocol family (usually AF_INET or AF_INET6)

Remarks:

Requires root privileges

Source

pub fn unbind(&self, pf: c_int) -> i32

Unbinds the nfqueue handler from a protocol family

Unbinds the given nfqueue handle from processing packets belonging to the given protocol family.

Arguments

  • pf - Protocol family (usually AF_INET or AF_INET6)

Remarks:

Requires root privileges

Source

pub fn fd(&self) -> i32

Returns the C file descriptor associated with the nfqueue handler

This function returns a file descriptor that can be used for communication over the netlink connection associated with the given queue connection handle.

Source

pub fn create_queue(&mut self, num: u16, cb: fn(&Message, &mut T))

create a new queue handler bind it to a queue number, and to a callback.

Creates a new queue handle, and returns it. The new queue is identified by num, and the callback specified by cb will be called for each enqueued packet.

Arguments

  • num: the number of the queue to bind to
  • cb: callback function to call for each queued packet
Source

pub fn destroy_queue(&mut self)

Destroys a group handle

Removes the binding for the specified queue handle. This call also unbind from the nfqueue handler, so you don’t need to call any extra function.

Source

pub fn set_mode(&self, mode: CopyMode, range: u32)

Set the amount of packet data that nfqueue copies to userspace

Arguments:

  • mode - The part of the packet that we are interested in
  • range - Size of the packet that we want to get

mode can be one of:

  • NFQNL_COPY_NONE - do not copy any data
  • NFQNL_COPY_META - copy only packet metadata
  • NFQNL_COPY_PACKET - copy entire packet
Source

pub fn set_queuelen(&self, queuelen: u32)

Set kernel queue maximum length parameter

Arguments:

  • queuelen - The length of the queue

Sets the size of the queue in kernel. This fixes the maximum number of packets the kernel will store before internally before dropping upcoming packets

Source

pub fn run_loop(&self)

Runs an infinite loop, waiting for packets and triggering the callback.

Auto Trait Implementations§

§

impl<T> Freeze for Queue<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Queue<T>
where T: RefUnwindSafe,

§

impl<T> !Send for Queue<T>

§

impl<T> !Sync for Queue<T>

§

impl<T> Unpin for Queue<T>
where T: Unpin,

§

impl<T> UnwindSafe for Queue<T>
where T: UnwindSafe,

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.

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