{"record":{"id":"827a96d76bf8e8f3","repo":"TechnitiumSoftware/DnsServer","slug":"edns-client-subnet-ipv4-prefix-length-cannot-be-gr","errorCode":null,"errorMessage":"EDNS Client Subnet IPv4 prefix length cannot be greater than 32.","messagePattern":"EDNS Client Subnet IPv4 prefix length cannot be greater than 32\\.","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"DnsServerCore/Dns/DnsServer.cs","lineNumber":7346,"sourceCode":"                                _cacheZoneManager.DeleteEDnsClientSubnetData();\n                            }\n                            catch (Exception ex)\n                            {\n                                _log.Write(ex);\n                            }\n                        });\n                    }\n                }\n            }\n        }\n\n        public byte EDnsClientSubnetIPv4PrefixLength\n        {\n            get { return _eDnsClientSubnetIPv4PrefixLength; }\n            set\n            {\n                if (value > 32)\n                    throw new ArgumentOutOfRangeException(nameof(EDnsClientSubnetIPv4PrefixLength), \"EDNS Client Subnet IPv4 prefix length cannot be greater than 32.\");\n\n                _eDnsClientSubnetIPv4PrefixLength = value;\n            }\n        }\n\n        public byte EDnsClientSubnetIPv6PrefixLength\n        {\n            get { return _eDnsClientSubnetIPv6PrefixLength; }\n            set\n            {\n                if (value > 64)\n                    throw new ArgumentOutOfRangeException(nameof(EDnsClientSubnetIPv6PrefixLength), \"EDNS Client Subnet IPv6 prefix length cannot be greater than 64.\");\n\n                _eDnsClientSubnetIPv6PrefixLength = value;\n            }\n        }\n\n        public NetworkAddress EDnsClientSubnetIpv4Override","sourceCodeStart":7328,"sourceCodeEnd":7364,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/Dns/DnsServer.cs#L7328-L7364","documentation":"Thrown by the EDnsClientSubnetIPv4PrefixLength property setter when the byte value exceeds 32. An IPv4 prefix length cannot exceed 32 bits (the full address width). The value is used for EDNS Client Subnet (ECS) responses to clients.","triggerScenarios":"Setting server.EDnsClientSubnetIPv4PrefixLength to a byte > 32.","commonSituations":"Confusing IPv4 and IPv6 prefix lengths; loading a config with a typo; copying a /64-style IPv6 value into the IPv4 field.","solutions":["Set the value to 32 or less (commonly /24 for ECS privacy).","Verify the config field is for IPv4, not IPv6."],"exampleFix":"// before\nserver.EDnsClientSubnetIPv4PrefixLength = 56; // throws\n\n// after\nserver.EDnsClientSubnetIPv4PrefixLength = 24;","handlingStrategy":"validation","validationCode":"byte v4Prefix = (byte)Math.Min(value, 32);\nserver.EDnsClientSubnetIPv4PrefixLength = v4Prefix;","typeGuard":"static bool IsValidV4Prefix(byte p) => p <= 32;","tryCatchPattern":"try { server.EDnsClientSubnetIPv4PrefixLength = value; }\ncatch (ArgumentOutOfRangeException) { server.EDnsClientSubnetIPv4PrefixLength = 24; }","preventionTips":["Remember IPv4 prefixes max at 32; never reuse IPv6 prefix values here.","Clamp config values to the valid range."],"tags":["dns","edns","ecs","ipv4","configuration"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}