aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/libp2p/tests.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 21:58:21 +0100
committertv <tv@krebsco.de>2026-10-31 21:58:21 +0100
commit0277b27b678cfbb86ccf72da583503621c6142e6 (patch)
tree9203f7bce3e46a60202e3421fbaa78d1f50ece72 /src/transport/libp2p/tests.rs
parent9517904f7925125df17b581132f6065477ff9439 (diff)
libp2p: warn/refuse bad prefer/ignore combos
Diffstat (limited to 'src/transport/libp2p/tests.rs')
-rw-r--r--src/transport/libp2p/tests.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/transport/libp2p/tests.rs b/src/transport/libp2p/tests.rs
index 9eb2808..f3c9374 100644
--- a/src/transport/libp2p/tests.rs
+++ b/src/transport/libp2p/tests.rs
@@ -220,6 +220,40 @@ fn address_ranges() {
for wrong in ["10.244.0.0/33", "42::/129", "nowhere", "10.0.0.0/x"] {
assert!(wrong.parse::<IpRange>().is_err(), "{wrong}");
}
+ // Mycelium's range: a prefix that isn't a multiple of 8.
+ let mycelium = [range("400::/7")];
+ assert!(ignored(
+ &mycelium,
+ &address("/ip6/45f:fa21:4bdd:1::1/tcp/9661")
+ ));
+ assert!(ignored(&mycelium, &address("/ip6/5ff::1/tcp/9661")));
+ assert!(!ignored(&mycelium, &address("/ip6/600::1/tcp/9661")));
+}
+
+/// A preferred range all ignored is refused; one with an ignored range in it is fine
+/// (with a warning).
+#[test]
+fn preferred_and_ignored_ranges() {
+ let check = |ignore: &[&str], prefer: &[&str]| {
+ let given = |ranges: &[&str]| {
+ ranges
+ .iter()
+ .map(|range| range.to_string())
+ .collect::<Vec<_>>()
+ };
+ let (ignore, prefer) = (given(ignore), given(prefer));
+ super::config::check_preferred(
+ &super::config::parse_ranges("libp2p-ignore", &ignore).unwrap(),
+ &super::config::parse_ranges("libp2p-prefer", &prefer).unwrap(),
+ &ignore,
+ &prefer,
+ )
+ };
+ assert!(check(&["10.244.0.0/16"], &["10.23.0.0/16"]).is_ok());
+ assert!(check(&["10.0.0.0/8"], &["10.23.0.0/16"]).is_err());
+ assert!(check(&["10.23.0.0/16"], &["10.23.0.0/16"]).is_err());
+ assert!(check(&["10.23.5.0/24"], &["10.23.0.0/16"]).is_ok());
+ assert!(check(&["42::/16"], &["10.0.0.0/8"]).is_ok());
}
/// Ranges left out aren't published; announced addresses are, whatever they are.