{"record":{"id":"7a41f0d3cace5058","repo":"zeroclaw-labs/zeroclaw","slug":"prefix-length-len-is-not-one-of-the-rfc-6052-le","errorCode":null,"errorMessage":"prefix length /{len} is not one of the RFC 6052 lengths /32, /40, /48, /56, /64, /96","messagePattern":"prefix length /(.+?) is not one of the RFC 6052 lengths /32, /40, /48, /56, /64, /96","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-infra/src/net_guard.rs","lineNumber":628,"sourceCode":"    pub fn parse(raw: &str) -> anyhow::Result<Self> {\n        let entry = raw.trim();\n        if entry.is_empty() {\n            anyhow::bail!(\"NAT64 prefix is empty\");\n        }\n\n        let (address, length) = entry\n            .split_once('/')\n            .ok_or_else(|| anyhow::Error::msg(\"missing '/<prefix-length>'\"))?;\n\n        let network = address\n            .parse::<std::net::Ipv6Addr>()\n            .map_err(|e| anyhow::Error::msg(format!(\"'{address}' is not an IPv6 address: {e}\")))?;\n        let len = length\n            .parse::<u8>()\n            .map_err(|e| anyhow::Error::msg(format!(\"'{length}' is not a prefix length: {e}\")))?;\n\n        if !RFC6052_PREFIX_LENGTHS.contains(&len) {\n            anyhow::bail!(\n                \"prefix length /{len} is not one of the RFC 6052 lengths /32, /40, /48, /56, /64, /96\"\n            );\n        }\n\n        // `len` is at most 96 here, so the shift is always in range.\n        let host_bits = u128::MAX >> len;\n        if u128::from_be_bytes(network.octets()) & host_bits != 0 {\n            anyhow::bail!(\"address '{address}' sets bits beyond /{len}\");\n        }\n\n        Ok(Self { network, len })\n    }\n\n    /// The prefix length in bits.\n    #[must_use]\n    pub const fn prefix_len(&self) -> u8 {\n        self.len\n    }","sourceCodeStart":610,"sourceCodeEnd":646,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-infra/src/net_guard.rs#L610-L646","documentation":"Error \"prefix length /{len} is not one of the RFC 6052 lengths /32, /40, /48, /56, /64, /96\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-infra/src/net_guard.rs:628 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use one of the RFC 6052 prefix lengths: /32, /40, /48, /56, /64, or /96."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}