[package]
name = "rosenpass-wireguard-broker"
authors = ["Karolin Varner <karo@cupdev.net>", "wucke13 <wucke13@gmail.com>"]
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "Rosenpass internal broker that runs as root and supplies exchanged keys to the kernel."
homepage = "https://rosenpass.eu/"
repository = "https://github.com/rosenpass/rosenpass"
readme = "readme.md"
rust-version = "1.77.0"

[dependencies]
thiserror = { workspace = true }
zerocopy = { workspace = true }
rosenpass-secret-memory = { workspace = true }

# Privileged only
wireguard-uapi = { workspace = true }

# Socket handler only
rosenpass-to = { workspace = true }
tokio = { workspace = true, features = ["sync", "full", "mio"] }
anyhow = { workspace = true }
clap = { workspace = true }
env_logger = { workspace = true }
log = { workspace = true }
derive_builder = { workspace = true }
postcard = { workspace = true }
# Problem in CI, unknown reasons: dependency (libc) specified without providing a local path, Git repository, version, or workspace dependency to use
# Maybe something about the combination of features and optional crates?
rustix = { workspace = true, optional = true }
libc = { workspace = true, optional = true }

# Mio broker client
mio = { workspace = true }
rosenpass-util = { workspace = true }

[dev-dependencies]
rand = { workspace = true }
procspawn = { workspace = true }

[features]
experiment_api = ["rustix", "libc"]
experiment_memfd_secret = []

[[bin]]
name = "rosenpass-wireguard-broker-privileged"
path = "src/bin/priviledged.rs"
test = false
doc = false
required-features = ["experiment_api"]
cfg = { target_os = "linux" }

[[bin]]
name = "rosenpass-wireguard-broker-socket-handler"
test = false
path = "src/bin/socket_handler.rs"
doc = false
required-features = ["experiment_api"]
cfg = { target_os = "linux" }
