{"record":{"id":"8418f40320c0f624","repo":"TechnitiumSoftware/DnsServer","slug":"edns-client-subnet-ipv6-override-must-be-an-ipv6-n","errorCode":null,"errorMessage":"EDNS Client Subnet IPv6 Override must be an IPv6 network address.","messagePattern":"EDNS Client Subnet IPv6 Override must be an IPv6 network address\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"DnsServerCore/Dns/DnsServer.cs","lineNumber":7390,"sourceCode":"                        throw new ArgumentException(\"EDNS Client Subnet IPv4 Override must be an IPv4 network address.\", nameof(EDnsClientSubnetIpv4Override));\n\n                    if (value.IsHostAddress)\n                        value = new NetworkAddress(value.Address, _eDnsClientSubnetIPv4PrefixLength);\n                }\n\n                _eDnsClientSubnetIpv4Override = value;\n            }\n        }\n\n        public NetworkAddress EDnsClientSubnetIpv6Override\n        {\n            get { return _eDnsClientSubnetIpv6Override; }\n            set\n            {\n                if (value is not null)\n                {\n                    if (value.AddressFamily != AddressFamily.InterNetworkV6)\n                        throw new ArgumentException(\"EDNS Client Subnet IPv6 Override must be an IPv6 network address.\", nameof(EDnsClientSubnetIpv6Override));\n\n                    if (value.IsHostAddress)\n                        value = new NetworkAddress(value.Address, _eDnsClientSubnetIPv6PrefixLength);\n                }\n\n                _eDnsClientSubnetIpv6Override = value;\n            }\n        }\n\n        public IReadOnlyDictionary<int, (int, int)> QpmPrefixLimitsIPv4\n        {\n            get { return _qpmPrefixLimitsIPv4; }\n            set\n            {\n                if (value is null)\n                {\n                    _qpmPrefixLimitsIPv4 = new Dictionary<int, (int, int)>();\n                }","sourceCodeStart":7372,"sourceCodeEnd":7408,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/Dns/DnsServer.cs#L7372-L7408","documentation":"Thrown by the EDnsClientSubnetIpv6Override property setter when the provided NetworkAddress has AddressFamily != InterNetworkV6 (i.e. it is not an IPv6 address). A valid IPv6 host address is automatically converted to a network address using the current IPv6 prefix length.","triggerScenarios":"Setting server.EDnsClientSubnetIpv6Override to a NetworkAddress wrapping an IPv4 address (AddressFamily.InterNetwork).","commonSituations":"Passing an IPv4 address into the IPv6 override slot; reusing one variable for both; config file field mapping error.","solutions":["Provide an IPv6 NetworkAddress (AddressFamily.InterNetworkV6).","Use EDnsClientSubnetIpv4Override for IPv4 addresses.","Check AddressFamily before assignment."],"exampleFix":"// before\nserver.EDnsClientSubnetIpv6Override =\n    new NetworkAddress(IPAddress.Parse(\"203.0.113.5\"), 56); // throws\n\n// after\nserver.EDnsClientSubnetIpv6Override =\n    new NetworkAddress(IPAddress.Parse(\"2001:db8::1\"), 56);","handlingStrategy":"type-guard","validationCode":"if (overrideAddr is not null && overrideAddr.AddressFamily != AddressFamily.InterNetworkV6)\n    throw new InvalidOperationException(\"IPv6 override must be an IPv6 address.\");\nserver.EDnsClientSubnetIpv6Override = overrideAddr;","typeGuard":"static bool IsIpv6NetworkAddress(NetworkAddress n) =>\n    n is null || n.AddressFamily == AddressFamily.InterNetworkV6;","tryCatchPattern":"try { server.EDnsClientSubnetIpv6Override = addr; }\ncatch (ArgumentException) { addr = new NetworkAddress(IPAddress.IPv6Any, prefix); server.EDnsClientSubnetIpv6Override = addr; }","preventionTips":["Verify AddressFamily is InterNetworkV6 before assignment.","Do not mix IPv4 and IPv6 override variables."],"tags":["dns","edns","ecs","ipv6","configuration"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}