Skip to content

Commit 137d9d9

Browse files
committed
Update Cargo.toml
1 parent d69246d commit 137d9d9

59 files changed

Lines changed: 10640 additions & 226 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 280 additions & 91 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
[workspace]
22

33
members = [
4+
"acl",
45
"args",
6+
"cascade",
57
"cli",
68
"common",
79
"concurrency",
@@ -11,7 +13,9 @@ members = [
1113
"dpdk",
1214
"dpdk-sys",
1315
"dpdk-sysroot-helper",
16+
"dpdk-test-macros",
1417
"errno",
18+
"fixed-size",
1519
"flow-entry",
1620
"flow-filter",
1721
"hardware",
@@ -22,7 +26,10 @@ members = [
2226
"k8s-less",
2327
"left-right-tlcache",
2428
"lifecycle",
29+
"lookup",
2530
"lpm",
31+
"match-action",
32+
"match-action-derive",
2633
"mgmt",
2734
"nat",
2835
"net",
@@ -59,7 +66,9 @@ repository = "https://github.com/githedgehog/dataplane/"
5966
# justifying why it is workspace-wide.
6067

6168
# Internal
69+
acl = { path = "./acl", package = "dataplane-acl", features = [] }
6270
args = { path = "./args", package = "dataplane-args", features = [] }
71+
cascade = { path = "./cascade", package = "dataplane-cascade", features = [] }
6372
cli = { path = "./cli", package = "dataplane-cli", features = [] }
6473
common = { path = "./common", package = "dataplane-common", features = [] }
6574
concurrency = { path = "./concurrency", package = "dataplane-concurrency", features = [] }
@@ -68,8 +77,10 @@ config = { path = "./config", package = "dataplane-config", features = [] }
6877
dpdk = { path = "./dpdk", package = "dataplane-dpdk", features = [] }
6978
dpdk-sys = { path = "./dpdk-sys", package = "dataplane-dpdk-sys", features = [] }
7079
dpdk-sysroot-helper = { path = "./dpdk-sysroot-helper", package = "dataplane-dpdk-sysroot-helper", features = [] }
80+
dpdk-test-macros = { path = "./dpdk-test-macros", package = "dataplane-dpdk-test-macros", features = [] }
7181
dplane-rpc = { git = "https://github.com/githedgehog/dplane-rpc.git", rev = "e8fc33db10e1d00785f2a2b90cbadcad7900f200", features = [] }
7282
errno = { path = "./errno", package = "dataplane-errno", features = [] }
83+
fixed-size = { path = "./fixed-size", package = "dataplane-fixed-size", features = [] }
7384
flow-entry = { path = "./flow-entry", package = "dataplane-flow-entry", features = [] }
7485
flow-filter = { path = "./flow-filter", package = "dataplane-flow-filter", features = [] }
7586
hardware = { path = "./hardware", package = "dataplane-hardware", features = [] }
@@ -80,7 +91,10 @@ k8s-intf = { path = "./k8s-intf", package = "dataplane-k8s-intf", default-featur
8091
k8s-less = { path = "./k8s-less", package = "dataplane-k8s-less", features = [] }
8192
left-right-tlcache = { path = "./left-right-tlcache", package = "dataplane-left-right-tlcache", features = [] }
8293
lifecycle = { path = "./lifecycle", package = "dataplane-lifecycle", features = [] }
94+
lookup = { path = "./lookup", package = "dataplane-lookup", features = [] }
8395
lpm = { path = "./lpm", package = "dataplane-lpm", features = [] }
96+
match-action = { path = "./match-action", package = "dataplane-match-action", features = [] }
97+
match-action-derive = { path = "./match-action-derive", package = "dataplane-match-action-derive", features = [] }
8498
mgmt = { path = "./mgmt", package = "dataplane-mgmt", features = [] }
8599
nat = { path = "./nat", package = "dataplane-nat", features = [] }
86100
net = { path = "./net", package = "dataplane-net", features = [] }
@@ -113,6 +127,7 @@ bytes = { version = "1.11.1", default-features = false, features = [] }
113127
caps = { version = "0.5.6", default-features = false, features = [] }
114128
chrono = { version = "0.4.44", default-features = false, features = [] }
115129
clap = { version = "4.6.1", default-features = true, features = [] }
130+
criterion = { version = "0.5.1", default-features = false, features = ["cargo_bench_support"] }
116131
color-eyre = { version = "0.6.5", default-features = false, features = [] }
117132
colored = { version = "3.1.1", default-features = false, features = [] }
118133
crossbeam-utils = { version = "0.8.21", default-features = false, features = [] }
@@ -249,6 +264,15 @@ overflow-checks = true
249264
# modified to use conditional compilation to work in wasm/miri.
250265
# miss: packages that are not logically hopeless, or pointless in wasm/miri, but which currently just happen to contain
251266
# logic which can and should eventually be factored out or abstracted into something suitable for wasm/miri.
267+
[workspace.metadata.package.acl]
268+
package = "dataplane-acl"
269+
# Default features enable the DPDK `rte_acl` backend, which pulls in
270+
# `dpdk-sys` (bindgen against the system DPDK headers). miri can't
271+
# build that path on the cross target, and the reference backend's
272+
# unit tests run fine outside the miri profile.
273+
miri = false # hopeless + pointless
274+
wasm = false # hopeless + pointless
275+
252276
[workspace.metadata.package.args]
253277
package = "dataplane-args"
254278
miri = true
@@ -259,6 +283,11 @@ package = "dataplane-cli"
259283
miri = true
260284
wasm = false # split
261285

286+
[workspace.metadata.package.cascade]
287+
package = "dataplane-cascade"
288+
miri = true
289+
wasm = false # split
290+
262291
[workspace.metadata.package.concurrency]
263292
package = "dataplane-concurrency"
264293
miri = true # must ALWAYS work
@@ -280,6 +309,11 @@ package = "dataplane-dpdk-sys"
280309
miri = false # hopeless + pointless
281310
wasm = false # hopeless + pointless
282311

312+
[workspace.metadata.package.fixed-size]
313+
package = "dataplane-fixed-size"
314+
miri = true
315+
wasm = true
316+
283317
[workspace.metadata.package.flow-entry]
284318
package = "dataplane-flow-entry"
285319
miri = true
@@ -315,6 +349,23 @@ package = "dataplane-k8s-less"
315349
miri = true
316350
wasm = false # split
317351

352+
[workspace.metadata.package.lookup]
353+
package = "dataplane-lookup"
354+
miri = true
355+
wasm = false # split (std collections)
356+
357+
[workspace.metadata.package.match-action]
358+
package = "dataplane-match-action"
359+
miri = true
360+
wasm = true
361+
362+
[workspace.metadata.package.match-action-derive]
363+
package = "dataplane-match-action-derive"
364+
# Proc-macro crate: runs at the host toolchain, not the miri target.
365+
# Excluded from miri to keep the target dep graph clean.
366+
miri = false # hopeless + pointless
367+
wasm = false # hopeless + pointless
368+
318369
[workspace.metadata.package.mgmt]
319370
package = "dataplane-mgmt"
320371
miri = false

acl/Cargo.toml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
[package]
2+
name = "dataplane-acl"
3+
edition.workspace = true
4+
license.workspace = true
5+
publish.workspace = true
6+
version.workspace = true
7+
8+
[features]
9+
default = []
10+
# Enables the DPDK `rte_acl` backend for `cascade::Lookup`. Pulls in
11+
# the `dpdk` crate (and transitively `dpdk-sys`), so off by default;
12+
# only the production binary / DPDK-bound consumers turn it on. The
13+
# reference backend (always built) carries its own `thiserror`-derived
14+
# error types, so `thiserror` is unconditional rather than feature-gated
15+
# under `dpdk`.
16+
dpdk = ["dep:dpdk"]
17+
18+
[dependencies]
19+
arrayvec = { workspace = true, default-features = true }
20+
concurrency = { workspace = true, features = [] }
21+
dpdk = { workspace = true, optional = true }
22+
lookup = { workspace = true, features = [] }
23+
match-action = { workspace = true, features = ["derive"] }
24+
net = { workspace = true, features = [] }
25+
thiserror = { workspace = true }
26+
27+
[dev-dependencies]
28+
# Differential oracle harness: random rulesets + packets compared
29+
# between the reference and DPDK backends.
30+
bolero = { workspace = true, features = ["std"] }
31+
criterion = { workspace = true }
32+
# Override the regular `dpdk` dep to enable its `test` feature
33+
# (exposes `dpdk::test_support::start_eal` and `dpdk::with_eal`).
34+
dpdk = { workspace = true, features = ["test"] }
35+
# Override match-action to also enable `bolero` for property-test
36+
# generators (`FieldHit` / `FieldMiss`).
37+
match-action = { workspace = true, features = ["derive", "bolero"] }
38+
net = { workspace = true, features = ["test_buffer", "builder"] }
39+
40+
[[bench]]
41+
name = "reference_five_tuple"
42+
harness = false
43+
44+
[[bench]]
45+
name = "dpdk_five_tuple"
46+
harness = false
47+
48+
[[bench]]
49+
name = "table_build"
50+
harness = false

0 commit comments

Comments
 (0)