From bdd6629bf312334cadcd3adff141b81d2b765cc7 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 12 Nov 2022 14:59:48 +0530 Subject: [PATCH] DomainTree: updated to add '/' as valid char to support classless in-addr.arpa usage. --- DnsServerCore/Dns/Trees/DomainTree.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/DnsServerCore/Dns/Trees/DomainTree.cs b/DnsServerCore/Dns/Trees/DomainTree.cs index 20bd873b..a90ca470 100644 --- a/DnsServerCore/Dns/Trees/DomainTree.cs +++ b/DnsServerCore/Dns/Trees/DomainTree.cs @@ -37,7 +37,7 @@ namespace DnsServerCore.Dns.Trees static DomainTree() { _keyMap = new byte[256]; - _reverseKeyMap = new byte[40]; + _reverseKeyMap = new byte[41]; int keyCode; @@ -61,27 +61,33 @@ namespace DnsServerCore.Dns.Trees _keyMap[i] = (byte)keyCode; _reverseKeyMap[keyCode] = (byte)i; } + else if (i == 47) //[/] + { + keyCode = 3; + _keyMap[i] = (byte)keyCode; + _reverseKeyMap[keyCode] = (byte)i; + } else if ((i >= 48) && (i <= 57)) //[0-9] { - keyCode = i - 45; //3 - 12 + keyCode = i - 44; //4 - 13 _keyMap[i] = (byte)keyCode; _reverseKeyMap[keyCode] = (byte)i; } else if (i == 95) //[_] { - keyCode = 13; + keyCode = 14; _keyMap[i] = (byte)keyCode; _reverseKeyMap[keyCode] = (byte)i; } else if ((i >= 97) && (i <= 122)) //[a-z] { - keyCode = i - 83; //14 - 39 + keyCode = i - 82; //15 - 40 _keyMap[i] = (byte)keyCode; _reverseKeyMap[keyCode] = (byte)i; } else if ((i >= 65) && (i <= 90)) //[A-Z] { - keyCode = i - 51; //14 - 39 + keyCode = i - 50; //15 - 40 _keyMap[i] = (byte)keyCode; } else @@ -92,7 +98,7 @@ namespace DnsServerCore.Dns.Trees } public DomainTree() - : base(40) + : base(41) { } #endregion