#![doc = include_str!("../README.md")]
#![deny(unsafe_op_in_unsafe_fn)]
#![warn(missing_docs)]
pub mod afpacket;
pub mod afxdp;
pub mod async_adapters;
pub mod bridge;
pub mod config;
pub mod dedup;
pub mod error;
pub mod interface;
#[cfg(feature = "metrics")]
pub mod metrics;
pub mod packet;
#[cfg(feature = "pcap")]
pub mod pcap;
pub mod stats;
pub mod traits;
pub(crate) mod sockopt;
pub(crate) mod syscall;
pub use afpacket::rx::{Capture, CaptureBuilder, Packets};
pub use afpacket::tx::{Injector, InjectorBuilder, TxSlot};
pub use bridge::{
Bridge, BridgeAction, BridgeBuilder, BridgeDirection, BridgeHandles, BridgeStats,
};
pub use config::{BpfFilter, BpfInsn, FanoutFlags, FanoutMode, RingProfile, TimestampSource};
pub use dedup::Dedup;
pub use error::Error;
pub use interface::{InterfaceInfo, interface_info};
pub use packet::{
BatchIter, OwnedPacket, Packet, PacketBatch, PacketDirection, PacketStatus, Timestamp,
};
pub use flowscope::PacketView;
pub use stats::CaptureStats;
pub use traits::{PacketSink, PacketSource};
#[cfg(feature = "af-xdp")]
pub use afxdp::{XdpBatch, XdpBatchIter, XdpPacket};
pub use afxdp::{XdpMode, XdpSocket, XdpSocketBuilder, XdpStats};
#[cfg(feature = "xdp-loader")]
pub mod xdp {
pub use crate::afxdp::loader::{
LoaderError, XdpAttachment, XdpFlags, XdpProgram, default_program,
};
}
#[cfg(feature = "channel")]
pub use async_adapters::channel::ChannelCapture;
#[cfg(feature = "tokio")]
pub use async_adapters::dedup_stream::DedupStream;
#[cfg(feature = "tokio")]
pub use async_adapters::tokio_adapter::{AsyncCapture, PacketStream, ReadableGuard};
#[cfg(feature = "tokio")]
pub use async_adapters::tokio_injector::AsyncInjector;
#[cfg(all(feature = "tokio", feature = "af-xdp"))]
pub use async_adapters::tokio_xdp::{AsyncXdpSocket, XdpReadableGuard, XdpStream};
#[cfg(feature = "tokio")]
pub use traits::AsyncPacketSource;
#[cfg(feature = "parse")]
pub mod flow {
pub use flowscope::extract;
pub use flowscope::{
Extracted, FlowExtractor, L4Proto, Orientation, PacketView, TcpFlags, TcpInfo,
};
#[cfg(feature = "flow")]
pub use flowscope::{
AnomalyKind, BufferedReassembler, BufferedReassemblerFactory, EndReason, FlowDriver,
FlowEntry, FlowEvent, FlowEvents, FlowSessionDriver, FlowSide, FlowState, FlowStats,
FlowTracker, FlowTrackerConfig, FlowTrackerStats, HistoryString, OverflowPolicy,
Reassembler, ReassemblerFactory,
};
#[cfg(all(feature = "tokio", feature = "flow"))]
pub use crate::async_adapters::async_reassembler::{
AsyncReassembler, AsyncReassemblerFactory, ChannelFactory, ChannelReassembler,
channel_factory,
};
}
#[cfg(all(feature = "tokio", feature = "flow"))]
pub use async_adapters::conversation::{Conversation, ConversationChunk, ConversationStream};
#[cfg(all(feature = "tokio", feature = "flow"))]
pub use async_adapters::flow_broadcast::{BroadcastRecvError, FlowBroadcast, FlowSubscriber};
#[cfg(all(feature = "tokio", feature = "flow"))]
pub use async_adapters::flow_stream::{AsyncReassemblerSlot, FlowStream, NoReassembler};