connectban: never collapse the ban mask to * on a sub-/8 CIDR (would z-line the whole network)

This commit is contained in:
Jean Chevronnet 2026-08-17 15:05:13 +00:00
parent 58d5a0e5a5
commit edb10a6607

View file

@ -31,7 +31,9 @@ fn range_of(ip: IpAddr, v4cidr: u8, v6cidr: u8) -> (String, String) {
match ip {
IpAddr::V4(a) => {
let o = a.octets();
let keep = (v4cidr / 8).min(4) as usize;
// byte-granular: keep at least one octet, so a sub-/8 config can never
// collapse the ban mask to "*" and z-line the entire network.
let keep = (v4cidr / 8).clamp(1, 4) as usize;
match keep {
0 => ("v4:*".to_string(), "*".to_string()),
4 => (format!("v4:{}", a), a.to_string()),