#![forbid(unsafe_code)]
#[cfg(test)]
#[allow(unused_macros)]
macro_rules! fixture_bytes {
($path:literal) => {
include_bytes!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/fixtures/",
$path
))
};
}
#[cfg(test)]
#[allow(unused_macros)]
macro_rules! fixture_str {
($path:literal) => {
include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/fixtures/",
$path
))
};
}
pub mod checksum;
pub mod endian;
pub mod error;
pub mod field;
pub mod mac;
pub mod packet;
pub mod protocols;
pub mod registry;
pub mod net;
pub mod wire;
pub use error::{CrafterError, Result};
pub use field::{Field, FieldState};
pub use mac::MacAddr;
pub use packet::{
hexdump, CompiledPacket, IntoPacket, Layer, LayerContext, LinkType, NetworkLayer, Packet, Raw,
TransportChecksumContext,
};
pub use protocols::exports::*;
pub use registry::{
EthertypeBindingContext, Ipv4ProtocolBindingContext, Ipv6NextHeaderBindingContext,
ProtocolRegistry, TcpBindingContext, UdpBindingContext,
};
pub use net::{
default_interface, default_interface_in, default_interface_name, find_interface,
find_interface_in, get_ip_strings, get_ips, get_my_ip, get_my_ip_in, get_my_ipv6,
get_my_ipv6_in, get_my_mac, get_my_mac_in, interface_for, interface_for_in, interfaces,
parse_ip_range, parse_numbers, reply_filter, reply_matches, send_packet, send_packets,
send_plan, send_recv_packet, send_recv_packets, BatchSend, BatchSendEntry, BatchSendRecv,
BatchSendRecvEntry, BatchSendRecvReport, BatchSendReport, InterfaceAddress, InterfaceInfo,
Ipv4Range, NetError, PacketBatchSendExt, PacketBatchSendRecvExt, PacketSendExt,
PacketSendRecvExt, RawSender, ReplyMatcher, SendMode, SendOptions, SendPlan, SendRecv,
SendRecvOptions, SendRecvReport, SendReport, SendTarget, SocketSend, SocketSender,
};
pub use wire::Sniffer;
pub use wire::{
derive_pmk, derive_ptk, BackendKind, BluetoothMetadata, Dot11Metadata, Dot15d4Metadata,
DropAllTransform, DuplicateTransform, IpDefrag, IpDefragConfig, IpDefragEvictionReason,
IpDefragMetadata, IpDefragOverlapPolicy, IpDefragOverlapStatus, IpDefragStats, IpFragment,
IpFragmentConfig, IpFragmentFamily, IpFragmentMetadata, IpFragmentRange, IpFragmentReason,
IpFragmentStats, Ipv4DontFragmentPolicy, Ipv4FragmentIdentificationPolicy,
Ipv6AtomicFragmentPolicy, Ipv6FragmentIdentificationPolicy, MediumMetadata, MemoryPacketWriter,
MemoryWrite, OpenedPacketSource, OpenedPacketWriter, PacketMetadata, PacketOrigin,
PacketRecord, PacketSource, PacketTransform, PacketWire, PacketWireBuilder, PacketWireTarget,
PacketWriter, PairwiseTransientKey, PassThroughTransform, Pmk, RadioMetadata,
RawSocketWireBuilder, RawSocketWriter, SnifferCancel, SnifferHandle, TraceAppendTransform,
TransformOutput, TransformTrace, Transmitter, VecPacketSource, WifiDecryptState, WifiMetadata,
WifiProtectionStatus, WireError, WpaAkm, WpaCipher, WpaCredentialStatus, WpaDecrypt,
WpaDecryptConfig, WpaDecryptReason, WpaHandshakeStatus, WpaKeyKind, WpaMetadata, WpaNetwork,
WriteReport, IP_DEFRAG_DEFAULT_MAX_AGE, IP_DEFRAG_DEFAULT_MAX_BYTES_PER_DATAGRAM,
IP_DEFRAG_DEFAULT_MAX_DATAGRAMS, IP_FRAGMENT_MIN_MTU,
};
#[cfg(feature = "whad")]
pub use wire::{WhadBleMode, WhadDot15d4Mode, WhadWireBuilder};
pub mod core {
pub use crate::checksum;
pub use crate::endian;
pub use crate::error;
pub use crate::field;
pub use crate::mac;
pub use crate::packet;
pub use crate::protocols;
pub use crate::protocols::exports::*;
pub use crate::registry;
pub use crate::registry::{
EthertypeBindingContext, Ipv4ProtocolBindingContext, Ipv6NextHeaderBindingContext,
ProtocolRegistry, TcpBindingContext, UdpBindingContext,
};
pub use crate::{
hexdump, CompiledPacket, CrafterError, Field, FieldState, IntoPacket, Layer, LayerContext,
LinkType, MacAddr, NetworkLayer, Packet, Raw, Result, TransportChecksumContext,
};
}
pub mod prelude {
pub use crate::core::*;
pub use crate::{
default_interface, default_interface_in, default_interface_name, derive_pmk, derive_ptk,
find_interface, find_interface_in, get_ip_strings, get_ips, get_my_ip, get_my_ip_in,
get_my_ipv6, get_my_ipv6_in, get_my_mac, get_my_mac_in, interface_for, interface_for_in,
interfaces, parse_ip_range, parse_numbers, reply_filter, reply_matches, send_packet,
send_packets, send_plan, send_recv_packet, send_recv_packets, BatchSend, BatchSendEntry,
BatchSendRecv, BatchSendRecvEntry, BatchSendRecvReport, BatchSendReport, Dot11Metadata,
InterfaceAddress, InterfaceInfo, Ipv4Range, NetError, PacketBatchSendExt,
PacketBatchSendRecvExt, PacketSendExt, PacketSendRecvExt, PairwiseTransientKey, Pmk,
RawSender, ReplyMatcher, SendMode, SendOptions, SendPlan, SendRecv, SendRecvOptions,
SendRecvReport, SendReport, SendTarget, Sniffer, SocketSend, SocketSender, Transmitter,
VecPacketSource, WifiDecryptState, WifiMetadata, WifiProtectionStatus, WireError, WpaAkm,
WpaCipher, WpaCredentialStatus, WpaDecrypt, WpaDecryptConfig, WpaDecryptReason,
WpaHandshakeStatus, WpaKeyKind, WpaMetadata, WpaNetwork, WriteReport,
};
pub use crate::{
BackendKind, BluetoothMetadata, Dot15d4Metadata, DropAllTransform, DuplicateTransform,
IpDefrag, IpDefragConfig, IpDefragEvictionReason, IpDefragMetadata, IpDefragOverlapPolicy,
IpDefragOverlapStatus, IpDefragStats, IpFragment, IpFragmentConfig, IpFragmentFamily,
IpFragmentMetadata, IpFragmentRange, IpFragmentReason, IpFragmentStats,
Ipv4DontFragmentPolicy, Ipv4FragmentIdentificationPolicy, Ipv6AtomicFragmentPolicy,
Ipv6FragmentIdentificationPolicy, MediumMetadata, MemoryPacketWriter, MemoryWrite,
OpenedPacketSource, OpenedPacketWriter, PacketMetadata, PacketOrigin, PacketRecord,
PacketSource, PacketTransform, PacketWire, PacketWireBuilder, PacketWireTarget,
PacketWriter, PassThroughTransform, RadioMetadata, RawSocketWireBuilder, RawSocketWriter,
SnifferCancel, SnifferHandle, TraceAppendTransform, TransformOutput, TransformTrace,
IP_DEFRAG_DEFAULT_MAX_AGE, IP_DEFRAG_DEFAULT_MAX_BYTES_PER_DATAGRAM,
IP_DEFRAG_DEFAULT_MAX_DATAGRAMS, IP_FRAGMENT_MIN_MTU,
};
#[cfg(feature = "whad")]
pub use crate::{WhadBleMode, WhadDot15d4Mode, WhadWireBuilder};
}