#[non_exhaustive]pub struct WinDivert<L: WinDivertLayerTrait> { /* private fields */ }Expand description
Main wrapper struct around windivert functionalities.
Implementations§
Source§impl WinDivert<NetworkLayer>
impl WinDivert<NetworkLayer>
Sourcepub fn recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
) -> Result<WinDivertPacket<'a, NetworkLayer>, WinDivertError>
pub fn recv<'a>( &self, buffer: Option<&'a mut [u8]>, ) -> Result<WinDivertPacket<'a, NetworkLayer>, WinDivertError>
Single packet blocking recv function.
Sourcepub fn recv_ex<'a>(
&self,
buffer: Option<&'a mut [u8]>,
packet_count: usize,
) -> Result<Vec<WinDivertPacket<'a, NetworkLayer>>, WinDivertError>
pub fn recv_ex<'a>( &self, buffer: Option<&'a mut [u8]>, packet_count: usize, ) -> Result<Vec<WinDivertPacket<'a, NetworkLayer>>, WinDivertError>
Batched blocking recv function.
Sourcepub fn send(
&self,
packet: &WinDivertPacket<'_, NetworkLayer>,
) -> Result<u32, WinDivertError>
pub fn send( &self, packet: &WinDivertPacket<'_, NetworkLayer>, ) -> Result<u32, WinDivertError>
Single packet send function.
Sourcepub fn send_ex<'data, 'packets, P, I>(
&self,
packets: P,
) -> Result<u32, WinDivertError>where
P: IntoIterator<IntoIter = I>,
I: ExactSizeIterator<Item = &'packets WinDivertPacket<'data, NetworkLayer>>,
'data: 'packets,
pub fn send_ex<'data, 'packets, P, I>(
&self,
packets: P,
) -> Result<u32, WinDivertError>where
P: IntoIterator<IntoIter = I>,
I: ExactSizeIterator<Item = &'packets WinDivertPacket<'data, NetworkLayer>>,
'data: 'packets,
Batched packet send function.
Source§impl WinDivert<ForwardLayer>
impl WinDivert<ForwardLayer>
Sourcepub fn recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
) -> Result<WinDivertPacket<'a, ForwardLayer>, WinDivertError>
pub fn recv<'a>( &self, buffer: Option<&'a mut [u8]>, ) -> Result<WinDivertPacket<'a, ForwardLayer>, WinDivertError>
Single packet blocking recv function.
Sourcepub fn recv_ex<'a>(
&self,
buffer: Option<&'a mut [u8]>,
packet_count: usize,
) -> Result<Vec<WinDivertPacket<'a, NetworkLayer>>, WinDivertError>
pub fn recv_ex<'a>( &self, buffer: Option<&'a mut [u8]>, packet_count: usize, ) -> Result<Vec<WinDivertPacket<'a, NetworkLayer>>, WinDivertError>
Batched blocking recv function.
Sourcepub fn send(
&self,
packet: &WinDivertPacket<'_, ForwardLayer>,
) -> Result<u32, WinDivertError>
pub fn send( &self, packet: &WinDivertPacket<'_, ForwardLayer>, ) -> Result<u32, WinDivertError>
Single packet send function.
Sourcepub fn send_ex<'data, 'packets, P, I>(
&self,
packets: P,
) -> Result<u32, WinDivertError>where
P: IntoIterator<IntoIter = I>,
I: ExactSizeIterator<Item = &'packets WinDivertPacket<'data, ForwardLayer>>,
'data: 'packets,
pub fn send_ex<'data, 'packets, P, I>(
&self,
packets: P,
) -> Result<u32, WinDivertError>where
P: IntoIterator<IntoIter = I>,
I: ExactSizeIterator<Item = &'packets WinDivertPacket<'data, ForwardLayer>>,
'data: 'packets,
Batched packet send function.
Source§impl WinDivert<FlowLayer>
impl WinDivert<FlowLayer>
Sourcepub fn recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
) -> Result<WinDivertPacket<'a, FlowLayer>, WinDivertError>
pub fn recv<'a>( &self, buffer: Option<&'a mut [u8]>, ) -> Result<WinDivertPacket<'a, FlowLayer>, WinDivertError>
Single packet blocking recv function.
Sourcepub fn recv_ex<'a>(
&self,
packet_count: usize,
) -> Result<Vec<WinDivertPacket<'a, FlowLayer>>, WinDivertError>
pub fn recv_ex<'a>( &self, packet_count: usize, ) -> Result<Vec<WinDivertPacket<'a, FlowLayer>>, WinDivertError>
Batched blocking recv function.
Source§impl WinDivert<SocketLayer>
impl WinDivert<SocketLayer>
Sourcepub fn recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
) -> Result<WinDivertPacket<'a, SocketLayer>, WinDivertError>
pub fn recv<'a>( &self, buffer: Option<&'a mut [u8]>, ) -> Result<WinDivertPacket<'a, SocketLayer>, WinDivertError>
Single packet blocking recv function.
Sourcepub fn recv_ex<'a>(
&self,
packet_count: usize,
) -> Result<Vec<WinDivertPacket<'a, SocketLayer>>, WinDivertError>
pub fn recv_ex<'a>( &self, packet_count: usize, ) -> Result<Vec<WinDivertPacket<'a, SocketLayer>>, WinDivertError>
Batched blocking recv function.
Source§impl WinDivert<ReflectLayer>
impl WinDivert<ReflectLayer>
Sourcepub fn recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
) -> Result<WinDivertPacket<'a, ReflectLayer>, WinDivertError>
pub fn recv<'a>( &self, buffer: Option<&'a mut [u8]>, ) -> Result<WinDivertPacket<'a, ReflectLayer>, WinDivertError>
Single packet blocking recv function.
Sourcepub fn recv_ex<'a>(
&self,
buffer: Option<&'a mut [u8]>,
packet_count: usize,
) -> Result<Vec<WinDivertPacket<'a, ReflectLayer>>, WinDivertError>
pub fn recv_ex<'a>( &self, buffer: Option<&'a mut [u8]>, packet_count: usize, ) -> Result<Vec<WinDivertPacket<'a, ReflectLayer>>, WinDivertError>
Batched blocking recv function.
Source§impl<L: WinDivertLayerTrait> WinDivert<L>
Recv implementations
impl<L: WinDivertLayerTrait> WinDivert<L>
Recv implementations
Sourcepub fn get_param(&self, param: WinDivertParam) -> Result<u64, WinDivertError>
pub fn get_param(&self, param: WinDivertParam) -> Result<u64, WinDivertError>
Methods that allows to query the driver for parameters.
Sourcepub fn set_param(
&self,
param: WinDivertParam,
value: u64,
) -> Result<(), WinDivertError>
pub fn set_param( &self, param: WinDivertParam, value: u64, ) -> Result<(), WinDivertError>
Method that allows setting driver parameters.
Sourcepub fn close(&mut self, action: CloseAction) -> WinResult<()>
pub fn close(&mut self, action: CloseAction) -> WinResult<()>
Handle close function.
Sourcepub fn shutdown(&mut self, mode: WinDivertShutdownMode) -> WinResult<()>
pub fn shutdown(&mut self, mode: WinDivertShutdownMode) -> WinResult<()>
Shutdown function.
Source§impl WinDivert<NetworkLayer>
impl WinDivert<NetworkLayer>
Sourcepub fn network(
filter: impl AsRef<str>,
priority: i16,
flags: WinDivertFlags,
) -> Result<Self, WinDivertError>
pub fn network( filter: impl AsRef<str>, priority: i16, flags: WinDivertFlags, ) -> Result<Self, WinDivertError>
WinDivert constructor for network layer.
Source§impl WinDivert<ForwardLayer>
impl WinDivert<ForwardLayer>
Sourcepub fn forward(
filter: impl AsRef<str>,
priority: i16,
flags: WinDivertFlags,
) -> Result<Self, WinDivertError>
pub fn forward( filter: impl AsRef<str>, priority: i16, flags: WinDivertFlags, ) -> Result<Self, WinDivertError>
WinDivert constructor for forward layer.
Source§impl WinDivert<FlowLayer>
impl WinDivert<FlowLayer>
Sourcepub fn flow(
filter: &str,
priority: i16,
flags: WinDivertFlags,
) -> Result<Self, WinDivertError>
pub fn flow( filter: &str, priority: i16, flags: WinDivertFlags, ) -> Result<Self, WinDivertError>
WinDivert constructor for flow layer.
Source§impl WinDivert<SocketLayer>
impl WinDivert<SocketLayer>
Sourcepub fn socket(
filter: impl AsRef<str>,
priority: i16,
flags: WinDivertFlags,
) -> Result<Self, WinDivertError>
pub fn socket( filter: impl AsRef<str>, priority: i16, flags: WinDivertFlags, ) -> Result<Self, WinDivertError>
WinDivert constructor for socket layer.
Source§impl WinDivert<ReflectLayer>
impl WinDivert<ReflectLayer>
Sourcepub fn reflect(
filter: impl AsRef<str>,
priority: i16,
flags: WinDivertFlags,
) -> Result<Self, WinDivertError>
pub fn reflect( filter: impl AsRef<str>, priority: i16, flags: WinDivertFlags, ) -> Result<Self, WinDivertError>
WinDivert constructor for reflect layer.