[package]
edition = "2024"
rust-version = "1.88"
name = "flowscope"
version = "0.18.0"
authors = ["Marc Pardo <p13marc@gmail.com>"]
build = false
exclude = [
"plans/",
"CLAUDE.md",
"fuzz/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Passive flow & session tracking for packet capture (runtime-free, cross-platform)"
homepage = "https://github.com/p13marc/flowscope"
documentation = "https://docs.rs/flowscope"
readme = "README.md"
keywords = [
"flow",
"session",
"tcp",
"packet",
"passive",
]
categories = [
"network-programming",
"parser-implementations",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/p13marc/flowscope"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[package.metadata.cargo-machete]
ignored = ["md-5"]
[features]
aggregate = ["dep:tdigest"]
arp = [
"extractors",
"tracker",
"session",
"dep:bytes",
]
asset = ["tracker"]
cdp = [
"extractors",
"tracker",
"dep:bytes",
]
chrono = ["dep:chrono"]
default = [
"extractors",
"tracker",
"reassembler",
"session",
]
dhcp = [
"extractors",
"tracker",
"session",
"dep:bytes",
]
dnp3 = [
"session",
"dep:bytes",
]
dns = [
"extractors",
"tracker",
"session",
"dep:simple-dns",
"dep:bytes",
]
emit = [
"tracker",
"extractors",
]
emit-eve = [
"emit",
"dep:serde_json",
]
emit-ndjson = [
"emit",
"serde",
"dep:serde_json",
]
extractors = [
"dep:etherparse",
"dep:smallvec",
]
file-hash = [
"reassembler",
"dep:sha2",
"dep:md-5",
"dep:hex",
]
fingerprint = ["dep:arrayvec"]
ftp = [
"session",
"dep:bytes",
]
full = [
"http",
"tls",
"tls-fingerprints",
"dns",
"icmp",
"arp",
"pcap",
"metrics",
"tracing",
"serde",
"emit",
"emit-ndjson",
"emit-eve",
"aggregate",
"chrono",
"file-hash",
"fingerprint",
]
http = [
"reassembler",
"session",
"dep:httparse",
"dep:bytes",
]
icmp = [
"extractors",
"tracker",
"session",
"dep:bytes",
]
ipfix = []
ipfix-export = [
"ipfix",
"dep:bytes",
]
ja4plus = [
"tls-fingerprints",
"dep:x509-parser",
"dep:sha2",
]
kerberos = [
"session",
"dep:kerberos-parser",
"dep:bytes",
]
l7 = [
"http",
"tls",
"tls-fingerprints",
"dns",
"icmp",
"arp",
"ndp",
"dhcp",
"lldp",
"cdp",
"ssh",
"ntp",
"ssdp",
"tftp",
"mdns",
]
ldap = [
"session",
"dep:ldap-parser",
"dep:bytes",
]
lldp = [
"extractors",
"tracker",
"dep:bytes",
]
mdns = ["dns"]
metrics = [
"tracker",
"dep:metrics",
]
ml-features = [
"ipfix",
"tracker",
"extractors",
]
ml-features-nprint = ["extractors"]
modbus = [
"session",
"dep:bytes",
]
ndp = [
"extractors",
"tracker",
"dep:bytes",
]
netbios-ns = [
"session",
"dep:smallvec",
]
ntp = [
"extractors",
"tracker",
"session",
]
pcap = [
"extractors",
"tracker",
"dep:pcap-file",
]
quic = [
"session",
"dep:quic-parser",
"dep:tls-parser",
]
radius = [
"session",
"dep:radius-parser",
]
rdp = [
"session",
"dep:bytes",
]
reassembler = ["tracker"]
serde = [
"dep:serde",
"bytes?/serde",
"arrayvec?/serde",
"smallvec?/serde",
]
session = ["tracker"]
smb = [
"session",
"dep:bytes",
]
smtp = [
"session",
"dep:bytes",
"dep:base64",
]
snmp = [
"session",
"dep:snmp-parser",
]
ssdp = [
"extractors",
"tracker",
"session",
]
ssh = [
"reassembler",
"session",
"dep:bytes",
"dep:md-5",
"dep:hex",
]
stun = ["session"]
tcp_fingerprint = [
"extractors",
"tracker",
]
test-helpers = ["extractors"]
tftp = [
"extractors",
"tracker",
"session",
]
tls = [
"reassembler",
"session",
"dep:tls-parser",
"dep:bytes",
]
tls-fingerprints = [
"tls",
"dep:md-5",
"dep:sha2",
"dep:hex",
]
tracing = [
"tracker",
"dep:tracing",
]
tracker = [
"dep:ahash",
"dep:smallvec",
"dep:arrayvec",
"dep:lru",
]
wireguard = ["session"]
[lib]
name = "flowscope"
path = "src/lib.rs"
[[example]]
name = "accumulating_line_parser"
path = "examples/06-custom-protocols/accumulating_line_parser.rs"
required-features = [
"pcap",
"extractors",
"session",
]
[[example]]
name = "allocations_per_packet"
path = "examples/08-performance/allocations_per_packet.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "arp_spoof_detector"
path = "examples/02-forensics/arp_spoof_detector.rs"
required-features = [
"arp",
"pcap",
]
[[example]]
name = "asset_inventory"
path = "examples/02-forensics/asset_inventory.rs"
required-features = [
"asset",
"arp",
"pcap",
]
[[example]]
name = "bandwidth_by_app"
path = "examples/04-observability/bandwidth_by_app.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "broadcast_subscribers"
path = "examples/00-getting-started/broadcast_subscribers.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "c2_beacon_finder"
path = "examples/03-detection/c2_beacon_finder.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "client_fingerprint_catalog"
path = "examples/02-forensics/client_fingerprint_catalog.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"tls",
"tls-fingerprints",
"http",
"ssh",
]
[[example]]
name = "composite_c2"
path = "examples/03-detection/composite_c2.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"dns",
"tls",
"emit-eve",
]
[[example]]
name = "conversation_timeline"
path = "examples/04-observability/conversation_timeline.rs"
required-features = [
"pcap",
"extractors",
"reassembler",
]
[[example]]
name = "detector_to_eve"
path = "examples/05-export/detector_to_eve.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"emit-eve",
]
[[example]]
name = "dga_finder"
path = "examples/03-detection/dga_finder.rs"
required-features = [
"pcap",
"dns",
"extractors",
]
[[example]]
name = "direction_skew_anomaly"
path = "examples/04-observability/direction_skew_anomaly.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "dns_log"
path = "examples/01-l7-logging/dns_log.rs"
required-features = [
"dns",
"pcap",
]
[[example]]
name = "dns_tunnel_detector"
path = "examples/03-detection/dns_tunnel_detector.rs"
required-features = [
"pcap",
"dns",
"extractors",
]
[[example]]
name = "eve_writer"
path = "examples/05-export/eve_writer.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
"emit-eve",
]
[[example]]
name = "extract_iocs"
path = "examples/02-forensics/extract_iocs.rs"
required-features = [
"pcap",
"http",
"tls",
"tls-fingerprints",
"dns",
"extractors",
"tracker",
"smtp",
"ftp",
"smb",
"kerberos",
"ldap",
]
[[example]]
name = "failed_auth_burst"
path = "examples/03-detection/failed_auth_burst.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "flow_csv_export"
path = "examples/05-export/flow_csv_export.rs"
required-features = [
"pcap",
"emit",
]
[[example]]
name = "flow_duration_histogram"
path = "examples/04-observability/flow_duration_histogram.rs"
required-features = [
"pcap",
"aggregate",
]
[[example]]
name = "flow_json_export"
path = "examples/05-export/flow_json_export.rs"
required-features = [
"pcap",
"emit-ndjson",
]
[[example]]
name = "from_stdin"
path = "examples/00-getting-started/from_stdin.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "gen_fixtures"
path = "examples/utilities/gen_fixtures.rs"
required-features = ["test-helpers"]
[[example]]
name = "gen_length_prefixed_pcap"
path = "examples/utilities/gen_length_prefixed_pcap.rs"
required-features = [
"test-helpers",
"pcap",
]
[[example]]
name = "hello_pipeline"
path = "examples/00-getting-started/hello_pipeline.rs"
required-features = [
"pcap",
"extractors",
"reassembler",
"session",
]
[[example]]
name = "http_error_rate"
path = "examples/04-observability/http_error_rate.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "http_exchanges"
path = "examples/01-l7-logging/http_exchanges.rs"
required-features = [
"http",
"pcap",
]
[[example]]
name = "http_log"
path = "examples/01-l7-logging/http_log.rs"
required-features = [
"http",
"pcap",
]
[[example]]
name = "icmp_explained_drops"
path = "examples/04-observability/icmp_explained_drops.rs"
required-features = [
"pcap",
"icmp",
"extractors",
"tracker",
]
[[example]]
name = "inspect_packet"
path = "examples/09-low-level/inspect_packet.rs"
required-features = [
"pcap",
"extractors",
]
[[example]]
name = "ipfix_udp_collector"
path = "examples/05-export/ipfix_udp_collector.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"ipfix-export",
]
[[example]]
name = "ipfix_wire_export"
path = "examples/05-export/ipfix_wire_export.rs"
required-features = [
"pcap",
"ipfix-export",
]
[[example]]
name = "kerberoast_hunter"
path = "examples/02-forensics/kerberoast_hunter.rs"
required-features = [
"kerberos",
"pcap",
]
[[example]]
name = "layer_fast_path"
path = "examples/08-performance/layer_fast_path.rs"
required-features = [
"pcap",
"extractors",
]
[[example]]
name = "ldap_recon_hunter"
path = "examples/02-forensics/ldap_recon_hunter.rs"
required-features = [
"ldap",
"pcap",
]
[[example]]
name = "length_prefixed_pcap"
path = "examples/06-custom-protocols/length_prefixed_pcap.rs"
required-features = [
"pcap",
"session",
]
[[example]]
name = "ml_features_libsvm"
path = "examples/05-export/ml_features_libsvm.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"ml-features",
]
[[example]]
name = "ml_features_pipeline"
path = "examples/04-observability/ml_features_pipeline.rs"
required-features = [
"pcap",
"ml-features",
"serde",
]
[[example]]
name = "multi_parser_pipeline"
path = "examples/07-multi-protocol/multi_parser_pipeline.rs"
required-features = [
"pcap",
"extractors",
"reassembler",
"session",
]
[[example]]
name = "multi_protocol_monitor"
path = "examples/07-multi-protocol/multi_protocol_monitor.rs"
required-features = [
"l7",
"pcap",
]
[[example]]
name = "nprint_export"
path = "examples/05-export/nprint_export.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"ml-features-nprint",
]
[[example]]
name = "overflow_policy"
path = "examples/09-low-level/overflow_policy.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
]
[[example]]
name = "pcap_buffered_reassembly"
path = "examples/09-low-level/pcap_buffered_reassembly.rs"
required-features = [
"pcap",
"reassembler",
]
[[example]]
name = "pcap_dir_tail"
path = "examples/05-export/pcap_dir_tail.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
"emit-eve",
]
[[example]]
name = "pcap_flow_keys"
path = "examples/09-low-level/pcap_flow_keys.rs"
required-features = ["pcap"]
[[example]]
name = "pcap_flow_summary"
path = "examples/09-low-level/pcap_flow_summary.rs"
required-features = ["pcap"]
[[example]]
name = "port_scan_detector"
path = "examples/03-detection/port_scan_detector.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "prometheus_exporter"
path = "examples/05-export/prometheus_exporter.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
"metrics",
]
[[example]]
name = "quic_initial_observer"
path = "examples/01-l7-logging/quic_initial_observer.rs"
required-features = [
"quic",
"pcap",
]
[[example]]
name = "redis_protocol"
path = "examples/06-custom-protocols/redis_protocol.rs"
required-features = [
"pcap",
"extractors",
"reassembler",
]
[[example]]
name = "sharded_capture"
path = "examples/08-performance/sharded_capture.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "smb_lateral_movement"
path = "examples/02-forensics/smb_lateral_movement.rs"
required-features = [
"smb",
"pcap",
]
[[example]]
name = "smtp_credentials"
path = "examples/02-forensics/smtp_credentials.rs"
required-features = [
"smtp",
"pcap",
]
[[example]]
name = "tcp_evasion_detector"
path = "examples/03-detection/tcp_evasion_detector.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
]
[[example]]
name = "tcp_retransmit_audit"
path = "examples/04-observability/tcp_retransmit_audit.rs"
required-features = [
"pcap",
"extractors",
"reassembler",
]
[[example]]
name = "threaded_slot_drain"
path = "examples/08-performance/threaded_slot_drain.rs"
required-features = [
"pcap",
"http",
]
[[example]]
name = "tls_inventory"
path = "examples/02-forensics/tls_inventory.rs"
required-features = [
"tls",
"tls-fingerprints",
"pcap",
]
[[example]]
name = "tls_observer"
path = "examples/01-l7-logging/tls_observer.rs"
required-features = [
"tls",
"pcap",
]
[[example]]
name = "top_talkers"
path = "examples/04-observability/top_talkers.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "top_talkers_topk"
path = "examples/04-observability/top_talkers_topk.rs"
required-features = [
"pcap",
"extractors",
"tracker",
]
[[example]]
name = "tracing_subscriber"
path = "examples/05-export/tracing_subscriber.rs"
required-features = [
"pcap",
"extractors",
"tracker",
"reassembler",
"tracing",
]
[[example]]
name = "unified_driver_demo"
path = "examples/00-getting-started/unified_driver_demo.rs"
required-features = [
"pcap",
"http",
"dns",
]
[[example]]
name = "zeek_style_conn_log"
path = "examples/05-export/zeek_style_conn_log.rs"
required-features = [
"pcap",
"emit",
]
[[test]]
name = "anomaly_fields"
path = "tests/anomaly_fields.rs"
required-features = [
"extractors",
"tracker",
]
[[test]]
name = "asset_inventory"
path = "tests/asset_inventory.rs"
[[test]]
name = "auto_sweep"
path = "tests/auto_sweep.rs"
[[test]]
name = "correlate_mergeable"
path = "tests/correlate_mergeable.rs"
[[test]]
name = "display_impls"
path = "tests/display_impls.rs"
required-features = ["tracker"]
[[test]]
name = "dns_exchange"
path = "tests/dns_exchange.rs"
required-features = ["dns"]
[[test]]
name = "dns_parser"
path = "tests/dns_parser.rs"
required-features = ["dns"]
[[test]]
name = "dns_resolution_cache"
path = "tests/dns_resolution_cache.rs"
required-features = ["dns"]
[[test]]
name = "driver"
path = "tests/driver.rs"
required-features = [
"test-helpers",
"extractors",
"session",
"reassembler",
]
[[test]]
name = "driver_broadcast"
path = "tests/driver_broadcast.rs"
[[test]]
name = "driver_deferred"
path = "tests/driver_deferred.rs"
required-features = [
"test-helpers",
"extractors",
"session",
"reassembler",
]
[[test]]
name = "driver_send"
path = "tests/driver_send.rs"
required-features = [
"test-helpers",
"extractors",
"session",
"reassembler",
]
[[test]]
name = "emit_csv"
path = "tests/emit_csv.rs"
required-features = ["emit"]
[[test]]
name = "emit_eve"
path = "tests/emit_eve.rs"
required-features = [
"emit-eve",
"tracker",
]
[[test]]
name = "emit_flow_record"
path = "tests/emit_flow_record.rs"
[[test]]
name = "emit_ndjson"
path = "tests/emit_ndjson.rs"
required-features = ["emit-ndjson"]
[[test]]
name = "emit_zeek"
path = "tests/emit_zeek.rs"
required-features = ["emit"]
[[test]]
name = "error_chain"
path = "tests/error_chain.rs"
[[test]]
name = "force_close"
path = "tests/force_close.rs"
required-features = [
"tracker",
"extractors",
"test-helpers",
]
[[test]]
name = "ftp_module"
path = "tests/ftp_module.rs"
[[test]]
name = "http_accessors"
path = "tests/http_accessors.rs"
required-features = ["http"]
[[test]]
name = "http_exchange"
path = "tests/http_exchange.rs"
required-features = ["http"]
[[test]]
name = "http_parser"
path = "tests/http_parser.rs"
required-features = ["http"]
[[test]]
name = "http_pcap"
path = "tests/http_pcap.rs"
required-features = [
"http",
"pcap",
]
[[test]]
name = "icmp_datagram_routing"
path = "tests/icmp_datagram_routing.rs"
[[test]]
name = "icmp_parser"
path = "tests/icmp_parser.rs"
required-features = ["icmp"]
[[test]]
name = "ipfix_wire"
path = "tests/ipfix_wire.rs"
[[test]]
name = "iter_active"
path = "tests/iter_active.rs"
required-features = [
"tracker",
"extractors",
"test-helpers",
]
[[test]]
name = "key_fields"
path = "tests/key_fields.rs"
required-features = [
"extractors",
"tracker",
]
[[test]]
name = "layers"
path = "tests/layers.rs"
[[test]]
name = "layers_completeness"
path = "tests/layers_completeness.rs"
[[test]]
name = "layers_extended"
path = "tests/layers_extended.rs"
[[test]]
name = "length_prefixed_example"
path = "tests/length_prefixed_example.rs"
required-features = [
"pcap",
"session",
"extractors",
]
[[test]]
name = "mdns_module"
path = "tests/mdns_module.rs"
[[test]]
name = "memcap_enforcement"
path = "tests/memcap_enforcement.rs"
[[test]]
name = "metrics_integration"
path = "tests/metrics_integration.rs"
required-features = [
"metrics",
"extractors",
"reassembler",
"test-helpers",
]
[[test]]
name = "ml_features"
path = "tests/ml_features.rs"
[[test]]
name = "netbios_ns_module"
path = "tests/netbios_ns_module.rs"
[[test]]
name = "owned_anomaly"
path = "tests/owned_anomaly.rs"
[[test]]
name = "parser_helpers"
path = "tests/parser_helpers.rs"
required-features = ["session"]
[[test]]
name = "parser_kind_constants"
path = "tests/parser_kind_constants.rs"
required-features = ["session"]
[[test]]
name = "parser_proptest"
path = "tests/parser_proptest.rs"
required-features = [
"http",
"tls",
"dns",
]
[[test]]
name = "pcap_fixtures"
path = "tests/pcap_fixtures.rs"
required-features = [
"pcap",
"test-helpers",
]
[[test]]
name = "pcap_helpers"
path = "tests/pcap_helpers.rs"
[[test]]
name = "pcap_integration"
path = "tests/pcap_integration.rs"
required-features = ["pcap"]
[[test]]
name = "pcap_l7_iterators"
path = "tests/pcap_l7_iterators.rs"
required-features = [
"pcap",
"session",
"reassembler",
"extractors",
]
[[test]]
name = "pcap_pacing"
path = "tests/pcap_pacing.rs"
[[test]]
name = "proptest_invariants"
path = "tests/proptest_invariants.rs"
required-features = [
"test-helpers",
"tracker",
]
[[test]]
name = "quic_initial"
path = "tests/quic_initial.rs"
[[test]]
name = "quick_wins"
path = "tests/quick_wins.rs"
[[test]]
name = "rexmit_inconsistency"
path = "tests/rexmit_inconsistency.rs"
[[test]]
name = "round_trip"
path = "tests/round_trip.rs"
required-features = [
"pcap",
"session",
"reassembler",
"extractors",
"test-helpers",
]
[[test]]
name = "serde_round_trip"
path = "tests/serde_round_trip.rs"
required-features = [
"serde",
"tracker",
]
[[test]]
name = "severity"
path = "tests/severity.rs"
required-features = ["reassembler"]
[[test]]
name = "smtp_module"
path = "tests/smtp_module.rs"
[[test]]
name = "tcp_overlap_policy"
path = "tests/tcp_overlap_policy.rs"
[[test]]
name = "tls_certificate"
path = "tests/tls_certificate.rs"
[[test]]
name = "tls_ech_state"
path = "tests/tls_ech_state.rs"
[[test]]
name = "tls_parser"
path = "tests/tls_parser.rs"
required-features = ["tls"]
[[test]]
name = "tracker_lookup_inner"
path = "tests/tracker_lookup_inner.rs"
[[test]]
name = "well_known"
path = "tests/well_known.rs"
[[bench]]
name = "dedup"
path = "benches/dedup.rs"
harness = false
required-features = ["tracker"]
[[bench]]
name = "extractor"
path = "benches/extractor.rs"
harness = false
required-features = [
"extractors",
"test-helpers",
]
[[bench]]
name = "reassembler"
path = "benches/reassembler.rs"
harness = false
required-features = ["reassembler"]
[[bench]]
name = "session_driver"
path = "benches/session_driver.rs"
harness = false
required-features = [
"session",
"reassembler",
"extractors",
"test-helpers",
]
[[bench]]
name = "tracker"
path = "benches/tracker.rs"
harness = false
required-features = [
"tracker",
"extractors",
"test-helpers",
]
[[bench]]
name = "zero_alloc"
path = "benches/zero_alloc.rs"
harness = false
required-features = [
"session",
"reassembler",
"extractors",
"http",
"dns",
"tls",
"test-helpers",
]
[dependencies.ahash]
version = "0.8"
optional = true
default-features = false
[dependencies.arrayvec]
version = "0.7"
optional = true
[dependencies.base64]
version = "0.22"
features = ["alloc"]
optional = true
default-features = false
[dependencies.bitflags]
version = "2"
[dependencies.bytes]
version = "1"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["alloc"]
optional = true
default-features = false
[dependencies.crossbeam-queue]
version = "0.3"
[dependencies.etherparse]
version = "0.16"
optional = true
[dependencies.hex]
version = "0.4"
optional = true
[dependencies.httparse]
version = "1.10"
optional = true
[dependencies.kerberos-parser]
version = "0.9"
optional = true
[dependencies.ldap-parser]
version = "0.5"
optional = true
[dependencies.lru]
version = "0.16"
optional = true
[dependencies.md-5]
version = "0.10"
optional = true
[dependencies.metrics]
version = "0.24"
optional = true
[dependencies.pcap-file]
version = "2"
optional = true
[dependencies.quic-parser]
version = "0.1"
optional = true
[dependencies.radius-parser]
version = "0.5"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1"
optional = true
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.simple-dns]
version = "0.10"
optional = true
[dependencies.smallvec]
version = "1"
optional = true
[dependencies.snmp-parser]
version = "0.11"
optional = true
[dependencies.tdigest]
version = "0.2"
optional = true
[dependencies.tls-parser]
version = "0.12"
optional = true
[dependencies.tracing]
version = "0.1"
features = [
"std",
"attributes",
]
optional = true
default-features = false
[dependencies.x509-parser]
version = "0.18"
optional = true
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.metrics-util]
version = "0.20"
[dev-dependencies.pcap-file]
version = "2"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.static_assertions]
version = "1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]