mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-02-05 23:44:00 +00:00
CacheRecordInfo: added response metadata feature.
This commit is contained in:
@@ -21,6 +21,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using TechnitiumLibrary.Net;
|
||||
using TechnitiumLibrary.Net.Dns;
|
||||
using TechnitiumLibrary.Net.Dns.ResourceRecords;
|
||||
|
||||
namespace DnsServerCore.Dns.ResourceRecords
|
||||
@@ -35,6 +36,7 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
IReadOnlyList<DnsResourceRecord> _rrsigRecords;
|
||||
IReadOnlyList<DnsResourceRecord> _nsecRecords;
|
||||
NetworkAddress _eDnsClientSubnet;
|
||||
DnsDatagramMetadata _responseMetadata;
|
||||
|
||||
DateTime _lastUsedOn; //not serialized
|
||||
|
||||
@@ -51,6 +53,7 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
_glueRecords = ReadRecordsFrom(bR, true);
|
||||
_rrsigRecords = ReadRecordsFrom(bR, false);
|
||||
_nsecRecords = ReadRecordsFrom(bR, true);
|
||||
@@ -58,6 +61,12 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
if (bR.ReadBoolean())
|
||||
_eDnsClientSubnet = NetworkAddress.ReadFrom(bR);
|
||||
|
||||
if (version >= 2)
|
||||
{
|
||||
if (bR.ReadBoolean())
|
||||
_responseMetadata = new DnsDatagramMetadata(bR);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -125,7 +134,7 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
|
||||
public void WriteTo(BinaryWriter bW)
|
||||
{
|
||||
bW.Write((byte)1); //version
|
||||
bW.Write((byte)2); //version
|
||||
|
||||
WriteRecordsTo(_glueRecords, bW, true);
|
||||
WriteRecordsTo(_rrsigRecords, bW, false);
|
||||
@@ -140,6 +149,16 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
bW.Write(true);
|
||||
_eDnsClientSubnet.WriteTo(bW);
|
||||
}
|
||||
|
||||
if (_responseMetadata is null)
|
||||
{
|
||||
bW.Write(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
bW.Write(true);
|
||||
_responseMetadata.WriteTo(bW);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -188,6 +207,12 @@ namespace DnsServerCore.Dns.ResourceRecords
|
||||
set { _eDnsClientSubnet = value; }
|
||||
}
|
||||
|
||||
public DnsDatagramMetadata ResponseMetadata
|
||||
{
|
||||
get { return _responseMetadata; }
|
||||
set { _responseMetadata = value; }
|
||||
}
|
||||
|
||||
public DateTime LastUsedOn
|
||||
{
|
||||
get { return _lastUsedOn; }
|
||||
|
||||
Reference in New Issue
Block a user