iroh-net 0.28.1

networking support for iroh
Documentation
[[bench]]
harness = false
name = "key"
path = "benches/key.rs"

[[bin]]
name = "iroh-relay"
path = "src/bin/iroh-relay.rs"
required-features = ["iroh-relay"]

[build-dependencies.duct]
version = "0.13.6"

[dependencies.anyhow]
version = "1"

[dependencies.axum]
optional = true
version = "0.7.4"

[dependencies.backoff]
version = "0.4.0"

[dependencies.base64]
version = "0.22.1"

[dependencies.bytes]
version = "1.7"

[dependencies.clap]
features = ["derive"]
optional = true
version = "4"

[dependencies.der]
features = ["alloc", "derive"]
version = "0.7"

[dependencies.derive_more]
features = ["debug", "display", "from", "try_into", "deref"]
version = "1.0.0"

[dependencies.futures-buffered]
version = "0.2.8"

[dependencies.futures-concurrency]
version = "7.6.0"

[dependencies.futures-lite]
version = "2.3"

[dependencies.futures-sink]
version = "0.3.25"

[dependencies.futures-util]
version = "0.3.25"

[dependencies.genawaiter]
features = ["futures03"]
optional = true
version = "0.99.1"

[dependencies.governor]
version = "0.6.0"

[dependencies.hex]
version = "0.4.3"

[dependencies.hickory-proto]
version = "=0.25.0-alpha.2"

[dependencies.hickory-resolver]
version = "=0.25.0-alpha.2"

[dependencies.hostname]
version = "0.3.1"

[dependencies.http]
version = "1"

[dependencies.http-body-util]
version = "0.1.0"

[dependencies.hyper]
features = ["server", "client", "http1"]
version = "1"

[dependencies.hyper-util]
version = "0.1.1"

[dependencies.igd-next]
features = ["aio_tokio"]
version = "0.15.1"

[dependencies.iroh-base]
features = ["key"]
version = "0.28.0"

[dependencies.iroh-metrics]
default-features = false
version = "0.28.0"

[dependencies.libc]
version = "0.2.139"

[dependencies.netdev]
version = "0.30.0"

[dependencies.netwatch]
version = "0.1.0"

[dependencies.num_enum]
version = "0.7"

[dependencies.once_cell]
version = "1.18.0"

[dependencies.parking_lot]
version = "0.12.1"

[dependencies.pin-project]
version = "1"

[dependencies.pkarr]
default-features = false
features = ["async", "relay"]
version = "2"

[dependencies.portmapper]
version = "0.1.0"

[dependencies.postcard]
default-features = false
features = ["alloc", "use-std", "experimental-derive"]
version = "1"

[dependencies.quinn]
package = "iroh-quinn"
version = "0.12.0"

[dependencies.quinn-proto]
package = "iroh-quinn-proto"
version = "0.12.0"

[dependencies.quinn-udp]
package = "iroh-quinn-udp"
version = "0.5.5"

[dependencies.rand]
version = "0.8"

[dependencies.rcgen]
version = "0.12"

[dependencies.regex]
optional = true
version = "1.7.1"

[dependencies.reqwest]
default-features = false
features = ["rustls-tls"]
version = "0.12"

[dependencies.ring]
version = "0.17"

[dependencies.rustls]
default-features = false
features = ["ring"]
version = "0.23"

[dependencies.rustls-pemfile]
optional = true
version = "2.1"

[dependencies.serde]
features = ["derive", "rc"]
version = "1"

[dependencies.smallvec]
version = "1.11.1"

[dependencies.socket2]
version = "0.5.3"

[dependencies.strum]
features = ["derive"]
version = "0.26.2"

[dependencies.stun-rs]
version = "0.1.5"

[dependencies.surge-ping]
version = "0.8.0"

[dependencies.swarm-discovery]
optional = true
version = "0.2.1"

[dependencies.thiserror]
version = "1"

[dependencies.time]
version = "0.3.20"

[dependencies.tokio]
features = ["io-util", "macros", "sync", "rt", "net", "fs", "io-std", "signal", "process"]
version = "1"

[dependencies.tokio-rustls]
default-features = false
features = ["logging", "ring"]
version = "0.26"

[dependencies.tokio-rustls-acme]
optional = true
version = "0.4"

[dependencies.tokio-stream]
version = "0.1.15"

[dependencies.tokio-tungstenite]
version = "0.21"

[dependencies.tokio-tungstenite-wasm]
version = "0.3"

[dependencies.tokio-util]
features = ["io-util", "io", "codec", "rt"]
version = "0.7.12"

[dependencies.toml]
optional = true
version = "0.8"

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-subscriber]
features = ["env-filter"]
optional = true
version = "0.3"

[dependencies.tungstenite]
version = "0.21"

[dependencies.url]
features = ["serde"]
version = "2.4"

[dependencies.watchable]
version = "1.1.2"

[dependencies.webpki]
package = "rustls-webpki"
version = "0.102"

[dependencies.webpki-roots]
version = "0.26"

[dependencies.x509-parser]
version = "0.16"

[dependencies.z32]
version = "1.0.3"

[dev-dependencies.axum]
version = "0.7.4"

[dev-dependencies.clap]
features = ["derive"]
version = "4"

[dev-dependencies.criterion]
version = "0.5.1"

[dev-dependencies.crypto_box]
features = ["serde", "chacha20"]
version = "0.9.1"

[dev-dependencies.iroh-test]
version = "0.28.0"

[dev-dependencies.mainline]
version = "2.0.1"

[dev-dependencies.ntest]
version = "0.9"

[dev-dependencies.pretty_assertions]
version = "1.4"

[dev-dependencies.proptest]
version = "1.2.0"

[dev-dependencies.rand_chacha]
version = "0.3.1"

[dev-dependencies.serde_json]
version = "1.0.107"

[dev-dependencies.testresult]
version = "0.4.0"

[dev-dependencies.tokio]
features = ["io-util", "sync", "rt", "net", "fs", "macros", "time", "test-util"]
version = "1"

[dev-dependencies.tracing-subscriber]
features = ["env-filter"]
version = "0.3"

[[example]]
name = "connect"
path = "examples/connect.rs"

[[example]]
name = "connect-unreliable"
path = "examples/connect-unreliable.rs"

[[example]]
name = "dht_discovery"
path = "examples/dht_discovery.rs"
required-features = ["discovery-pkarr-dht"]

[[example]]
name = "listen"
path = "examples/listen.rs"

[[example]]
name = "listen-unreliable"
path = "examples/listen-unreliable.rs"

[[example]]
name = "locally-discovered-nodes"
path = "examples/locally-discovered-nodes.rs"
required-features = ["discovery-local-network"]

[features]
default = ["metrics", "discovery-pkarr-dht"]
discovery-local-network = ["dep:swarm-discovery"]
discovery-pkarr-dht = ["pkarr/dht", "dep:genawaiter"]
iroh-relay = ["dep:tokio-rustls-acme", "dep:axum", "dep:clap", "dep:toml", "dep:rustls-pemfile", "dep:regex", "dep:tracing-subscriber"]
metrics = ["iroh-metrics/metrics"]
test-utils = ["iroh-relay"]

[lib]
name = "iroh_net"
path = "src/lib.rs"

[lints.clippy]
unused-async = "warn"

[lints.rust]
missing_debug_implementations = "warn"

[lints.rust.unexpected_cfgs]
check-cfg = ["cfg(iroh_docsrs)"]
level = "warn"
priority = 0

[package]
authors = ["dignifiedquire <me@dignifiedquire.com>", "n0 team"]
autobenches = false
autobins = false
autoexamples = false
autotests = false
build = false
description = "networking support for iroh"
edition = "2021"
keywords = ["quic", "networking", "holepunching", "p2p"]
license = "MIT OR Apache-2.0"
name = "iroh-net"
readme = "README.md"
repository = "https://github.com/n0-computer/iroh"
rust-version = "1.76"
version = "0.28.1"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "iroh_docsrs"]

[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies.netlink-packet-core]
version = "0.7.0"

[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies.netlink-packet-route]
version = "0.17.0"

[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies.netlink-sys]
version = "0.8.5"

[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies.rtnetlink]
version = "0.13.0"

[target.'cfg(target_os = "windows")'.dependencies.windows]
features = ["Win32_NetworkManagement_IpHelper", "Win32_Foundation", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock"]
version = "0.51"

[target.'cfg(target_os = "windows")'.dependencies.wmi]
version = "0.13"