#[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>
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.