#[cfg(feature = "npcap-runtime")]
mod dlopen;
#[cfg(not(feature = "npcap-runtime"))]
mod link;
#[cfg(feature = "npcap-runtime")]
pub use dlopen::Npcap;
#[cfg(not(feature = "npcap-runtime"))]
pub use link::Npcap;
use windows_sys::Win32::Foundation::{BOOLEAN, HANDLE};
use windows_sys::Win32::Networking::WinSock::SOCKADDR_STORAGE;
use windows_sys::Win32::System::Threading::CRITICAL_SECTION;
use windows_sys::Win32::System::IO::OVERLAPPED;
use std::mem;
use crate::filter::BpfInstruction;
pub const PACKET_ALIGNMENT: usize = mem::size_of::<libc::c_int>();
pub const fn packet_wordalign(x: usize) -> usize {
(x + (PACKET_ALIGNMENT - 1)) & !(PACKET_ALIGNMENT - 1)
}
pub const MAX_LINK_NAME_LENGTH: usize = 64;
pub const ADAPTER_NAME_LENGTH: usize = 256 + 12;
#[repr(C)]
pub struct NetType {
pub link_type: libc::c_uint,
pub link_speed: libc::c_ulonglong,
}
#[repr(C)]
pub struct BpfStat {
pub bs_recv: libc::c_uint,
pub bs_drop: libc::c_uint,
pub ps_ifdrop: libc::c_uint,
pub bs_capt: libc::c_uint,
}
#[allow(unused)]
#[repr(C)]
pub struct BpfHdr {
pub bh_tstamp: libc::timeval, pub bh_caplen: libc::c_uint, pub bh_datalen: libc::c_uint, pub bh_hdrlen: libc::c_ushort, }
#[allow(unused)]
#[repr(C)]
pub struct DumpBpfHdr {
pub ts: libc::timeval,
pub caplen: libc::c_uint,
pub len: libc::c_uint,
}
#[repr(C)]
pub struct NpfIfAddr {
pub ip_address: SOCKADDR_STORAGE,
pub subnet_mask: SOCKADDR_STORAGE,
pub broadcast: SOCKADDR_STORAGE,
}
#[repr(C)]
pub struct Adapter {
pub h_file: HANDLE,
pub symbolic_link: [libc::c_char; MAX_LINK_NAME_LENGTH],
pub num_writes: libc::c_int,
pub read_event: HANDLE,
pub read_timeout: libc::c_uint,
pub name: [libc::c_char; ADAPTER_NAME_LENGTH],
pub wan_adapter: *mut WanAdapter, pub flags: libc::c_uint,
}
#[repr(C)]
pub struct Packet {
pub h_event: HANDLE,
pub overlapped: OVERLAPPED,
pub buffer: *mut libc::c_void,
pub length: libc::c_uint,
pub ul_bytes_received: libc::c_ulong, pub bio_complete: BOOLEAN,
}
#[repr(C)]
pub struct PacketOidData {
pub oid: libc::c_ulong,
pub length: libc::c_ulong,
pub data: [libc::c_uchar; 1], }
#[repr(C)]
pub struct WanAdapter {
pub h_capture_blob: *const libc::c_void, pub critical_section: CRITICAL_SECTION,
pub buffer: *mut libc::c_uchar, pub c: libc::c_ulong, pub p: libc::c_ulong, pub free: libc::c_ulong, pub size: libc::c_ulong, pub dropped: libc::c_ulong, pub accepted: libc::c_ulong, pub received: libc::c_ulong, pub min_to_copy: libc::c_ulong, pub read_timeout: libc::c_ulong, pub h_read_event: libc::c_ulong, pub filter_code: *mut BpfInstruction,
pub mode: libc::c_ulong, pub nbytes: i64, pub npackets: i64, pub p_irtc: *mut libc::c_void, }