{"record":{"id":"2e3cca1ed932cb4c","repo":"shadowsocks/shadowsocks-rust","slug":"invalid-fake-dns-ipv4-network","errorCode":null,"errorMessage":"invalid `fake_dns_ipv4_network`","messagePattern":"invalid `fake_dns_ipv4_network`","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/shadowsocks-service/src/config.rs","lineNumber":2058,"sourceCode":"                            local_config.socks5_auth = Socks5AuthConfig::load_from_file(&socks5_auth_config_path)?;\n                        }\n\n                        #[cfg(feature = \"local-http\")]\n                        if let Some(http_auth_config_path) = local.http_auth_config_path {\n                            local_config.http_auth = HttpAuthConfig::load_from_file(&http_auth_config_path)?;\n                        }\n\n                        #[cfg(feature = \"local-fake-dns\")]\n                        {\n                            if let Some(d) = local.fake_dns_record_expire_duration {\n                                local_config.fake_dns_record_expire_duration = Some(Duration::from_secs(d));\n                            }\n                            if let Some(n) = local.fake_dns_ipv4_network {\n                                match n.parse::<Ipv4Net>() {\n                                    Ok(n) => local_config.fake_dns_ipv4_network = Some(n),\n                                    Err(..) => {\n                                        let err =\n                                            Error::new(ErrorKind::Malformed, \"invalid `fake_dns_ipv4_network`\", None);\n                                        return Err(err);\n                                    }\n                                }\n                            }\n                            if let Some(n) = local.fake_dns_ipv6_network {\n                                match n.parse::<Ipv6Net>() {\n                                    Ok(n) => local_config.fake_dns_ipv6_network = Some(n),\n                                    Err(..) => {\n                                        let err =\n                                            Error::new(ErrorKind::Malformed, \"invalid `fake_dns_ipv6_network`\", None);\n                                        return Err(err);\n                                    }\n                                }\n                            }\n                            if let Some(p) = local.fake_dns_database_path {\n                                local_config.fake_dns_database_path = Some(p.into());\n                            }\n                        }","sourceCodeStart":2040,"sourceCodeEnd":2076,"githubUrl":"https://github.com/shadowsocks/shadowsocks-rust/blob/8eb0f0a65b1d976ab6bed5787327ef86529b0435/crates/shadowsocks-service/src/config.rs#L2040-L2076","documentation":"Thrown while parsing a local (SIP008/JSON) config: `fake_dns_ipv4_network` could not be parsed as an Ipv4Net. Fake-DNS needs a valid IPv4 CIDR range; any other string is rejected with ErrorKind::Malformed.","triggerScenarios":"Config parsing with `fake_dns_ipv4_network` set to a non-IPv4-CIDR value: an IPv6 network, a bare IP, an over-long prefix like `/33`, or malformed text.","commonSituations":"Configuring fake-dns ranges by hand; accidentally entering an IPv6 range in the IPv4 field; forgetting the prefix length.","solutions":["Use a valid IPv4 CIDR, e.g. `\"fake_dns_ipv4_network\": \"10.0.0.0/8\"`","Confirm the value contains no colons (IPv6) and prefix is 0-32","Append a prefix length if only an address was given"],"exampleFix":"// before\n{\"fake_dns_ipv4_network\": \"198.18.0.1\"}\n// after\n{\"fake_dns_ipv4_network\": \"198.18.0.0/15\"}","handlingStrategy":"validation","validationCode":"fn valid_ipv4net(s: &str) -> bool { s.parse::<ipnet::Ipv4Net>().is_ok() }\n// before load: assert config[\"fake_dns_ipv4_network\"].as_str().map(valid_ipv4net).unwrap_or(true)","typeGuard":"fn is_ipv4net(s: &str) -> bool { s.parse::<ipnet::Ipv4Net>().is_ok() }","tryCatchPattern":"match Config::load_from_json(...) { Err(e) if format!(\"{e}\").contains(\"fake_dns_ipv4_network\") => fix_and_retry(), ... }","preventionTips":["Use standard fake-dns ranges like 198.18.0.0/15","Keep IPv4 and IPv6 fake-dns fields separate","Always include a prefix length"],"tags":["config","fake-dns","ipv4"],"backgroundTag":"invalid-config-value","analyzedSha":"8eb0f0a65b1d976ab6bed5787327ef86529b0435","analyzedAt":"2026-09-09T12:20:43.168Z","contentChangedAt":"2026-09-09T12:20:43.168Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}