[package] name = "rotonda" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true description = "composable, programmable BGP engine" repository = "https://github.com/NLnetLabs/rotonda/" homepage = "https://www.nlnetlabs.nl/projects/routing/rotonda/" keywords = ["routing", "bgp"] categories = ["network-programming"] license = "MPL-2.0" exclude = [ ".github" ] readme = "README.md" default-run = "rotonda" [[bin]] name = "print_rotonda_std_doc" path = "doc/bin/print_rotonda_std_doc.rs" [workspace.package] version = "0.2.1" edition = "2021" rust-version = "1.80" authors = ["NLnet Labs "] [workspace] #members = [] [workspace.dependencies] routecore = { version = "0.5.0", features = ["bgp", "bmp", "serde", "fsm", "mrt"] } inetnum = { version = "0.1.1", features = ["arbitrary", "serde"] } rotonda-store = { version = "0.4.0" } log = "0.4" [dependencies] arc-swap = "1.6" chrono = "0.4" clap = { version = "4.4", features = ["cargo"] } crossbeam-utils = "0.8" fern = "0.6" futures = "0.3" hash32 = "0.3.1" hyper = { version = "0.14", features = ["server", "stream"] } log = { workspace = true } log-reroute = "0.1" pin-project-lite = "0.2" rand = "0.8" reqwest = { version = "0.11", default-features = false } routecore = { workspace = true } sanitise-file-name = "1.0" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = { version = "1.0", features = ["preserve_order"] } slab = "0.4" tokio = { version = "1.40", features = ["fs", "io-util", "macros", "net", "rt", "rt-multi-thread", "signal", "sync", "test-util", "time", "tracing"] } toml = "0.8" url = { version = "2.4", features = ["serde"] } # Dependencies specifically used by the BGP/BMP related modifications to the original RTRTR base allocator-api2 = "0.2" assert-json-diff = "2.0" async-trait = "0.1" atomic_enum = "0.2.0" flate2 = { version = "1.0", optional = true } anyhow = "1.0" bytes = { version = "1.5.0" } const_format = "0.2" hex-slice = "0.1" hash_hasher = "2.0" hashbrown = "0.14" html-escape = { version = "0.2" } inetnum = { workspace = true } indoc = "2.0" layout-rs = { version = "0.1" } mqtt = { version = "0.23.0", package = "rumqttc", default-features = false } memmap2 = "0.9.4" non-empty-vec = { version = "0.2", features = ["serde"]} percent-encoding = "2.3" roto = { version = "0.3.0" } rotonda-store = { workspace = true } serde_with = "3" smallvec = { version = "1.11", features = ["const_generics", "const_new", "union"] } tokio-metrics = { version = "0.3", default-features = false } uuid = { version = "1.4", features = ["v4", "fast-rng"] } [target.'cfg(unix)'.dependencies] syslog = "6.1" [dev-dependencies] hex = "0.4" env_logger = "0.10" prometheus-parse = "0.2" reqwest = { version = "0.11", default-features = false, features = ["json"] } rumqttd = { version = "0.18.0", default-features = false } serde_json = "1.0" [profile.release] strip = true [features] default = ["http-api-gzip"] # Enable GZIP compression of the HTTP /metrics response http-api-gzip = ["flate2"] [package.metadata.deb] name = "rotonda" maintainer = "NLnet Labs " license-file = ["LICENSE", "0"] extended-description = """\ Roll your own BGP/BMP applications with Rotonda. Applications that you will be able to build with Rotonda include, but are not limited to, a route monitor, a route collector, a route server, or a route reflector.""" # ensure that the useradd tools are present by installing their respective packages depends = "$auto, passwd" section = "net" priority = "optional" assets = [ ["target/release/rotonda", "usr/bin/", "755"], ["README.md", "usr/share/doc/rotonda/", "644"], ["doc/rotonda.1", "usr/share/man/man1/rotonda.1", "644"], ["etc/rotonda.conf", "etc/rotonda/rotonda.conf", "644"], ["etc/examples/filters.roto.example", "usr/share/rotonda/examples/filters.roto.example", "644"], ["etc/examples/mrt-in-1.conf.example", "usr/share/rotonda/examples/mrt-in-1.conf.example", "644"], ["etc/examples/mrt-in-2.conf.example", "usr/share/rotonda/examples/mrt-in-2.conf.example", "644"], ] maintainer-scripts = "pkg/debian" changelog = "target/debian/changelog" # this will be generated by the pkg workflow copyright = "Copyright (c) 2024, NLnet Labs. All rights reserved." conf-files = [ "/etc/rotonda/rotonda.conf", ] systemd-units = { unit-name = "rotonda", unit-scripts = "pkg/common", enable = false } [package.metadata.deb.variants.minimal] [package.metadata.generate-rpm] # "BSD" alone is the 3-clause license. Inheriting "license" from above causes rpmlint to # complain with "invalid-license". # See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing license = "BSD" assets = [ { source = "target/release/rotonda", dest = "/usr/bin/rotonda", mode = "755" }, { source = "target/rpm/rotonda.service", dest = "/lib/systemd/system/rotonda.service", mode = "644" }, { source = "doc/rotonda.1", dest = "/usr/share/man/man1/rotonda.1", mode = "644", doc = true }, { source = "etc/rotonda.conf", dest = "/etc/rotonda/rotonda.conf", mode = "644", config = true }, { source = "etc/examples/filters.roto.example", dest = "/usr/share/rotonda/examples/filters.roto.example", mode = "644", config = false }, { source = "etc/examples/mrt-in-1.conf.example", dest = "/usr/share/rotonda/examples/mrt-in-1.conf.example", mode = "644", config = false }, { source = "etc/examples/mrt-in-2.conf.example", dest = "/usr/share/rotonda/examples/mrt-in-2.conf.example", mode = "644", config = false }, ] # These get set using cargo-generate-rpm --set-metadata at package build time. #post_install_script = ... #pre_uninstall_script = ... #post_uninstall_script = ... # ensure that the useradd tools are present by installing their respective packages [package.metadata.generate-rpm.requires] shadow-utils = "*"