netmap-rs 0.3.1

Safe, zero-cost abstractions for Netmap kernel-bypass networking
Documentation
[package]
name = "netmap-rs"
version = "0.3.1"
edition = "2021"  # Changed from 2024 to 2021 for better compatibility
authors = ["Meshack Bahati Ouma <bahatikylemeshack@gmail.com>"]
description = "Safe, zero-cost abstractions for Netmap kernel-bypass networking"
license = "MIT OR Apache-2.0"
repository = "https://github.com/meshackbahati/netmap-rs"
keywords = ['networking', 'zero-copy', 'netmap', 'low-latency', 'ffi']
categories = ['api-bindings']
readme = 'README.md'

[features]
default = []
sys = ['netmap-min-sys', 'core_affinity', 'reed-solomon-erasure'] # For FEC example
fallback = ['core_affinity'] # Also include for thread_per_ring example under fallback
tokio-async = ["tokio", "netmap-min-sys"] # tokio-async also implies sys for Netmap struct

[dependencies]
bitflags = "2.6"  # Updated to latest version
tokio = { version = "1.40", features = ["net", "io-util", "macros", "rt", "time"], optional = true }  # Updated version
core_affinity = { version = "0.8", optional = true }
crossbeam = { version = "0.8", optional = true }
libc = "0.2"
# Published on crates.io as of v0.3.1.
netmap-min-sys = { version = "0.3.1", optional = true }
reed-solomon-erasure = { version = "6.0.0", optional = true}
thiserror = "2.0"  # Updated to latest version

[dev-dependencies]
criterion = "0.5"  # Updated version
tempfile = "3.13"  # Updated version
ctrlc = { version = "3.4", features = ["termination"] }  # Updated version
polling = "3.7" # For polling example  # Updated version

[[bench]]
name = "latency"
harness = false

[[bench]]
name = "throughput"
harness = false

[[example]]
name= "ping_pong"
required-features = ["sys"]

[[example]]
name = "sliding_window_arq"
required-features = ["sys"]

[[example]]
name = "fec"
required-features = ["sys"]

[[example]]
name = "thread_per_ring"
required-features = ["sys"]

[[example]]
name = "example"
required-features = ["sys"]

[[example]]
name = "host_receive"
required-features = ["sys"]

[[example]]
name = "host_transmit"
required-features = ["sys"]

[[example]]
name = "pipe_receiver_process"
required-features = ["sys"]

[[example]]
name = "pipe_sender_process"
required-features = ["sys"]

[[example]]
name = "pipe_threads"
required-features = ["sys"]

[[example]]
name = "poll_basic"
required-features = ["sys"]

[[example]]
name = "tokio_pipe_async"
required-features = ["tokio-async"]

# Ready-to-run applications mirroring the upstream netmap C repo layout.
# All require the "sys" feature (and therefore an installed Netmap kernel
# module). They operate on VALE ports and netmap pipes only, so they never
# touch your live network interfaces.
[[bin]]
name = "pkt-gen"
path = "apps/pkt-gen/main.rs"
required-features = ["sys"]

[[bin]]
name = "vale-ctl"
path = "apps/vale-ctl/main.rs"
required-features = ["sys"]

[[bin]]
name = "ping"
path = "apps/ping/main.rs"
required-features = ["sys"]

[[bin]]
name = "bridge"
path = "apps/bridge/main.rs"
required-features = ["sys"]

[[bin]]
name = "tokio-proxy"
path = "apps/tokio-proxy/main.rs"
required-features = ["tokio-async"]