2019-12-08 21:23:54 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace Swan.Net.Dns {
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// DnsClient public interfaces.
|
|
|
|
|
/// </summary>
|
|
|
|
|
internal partial class DnsClient {
|
|
|
|
|
public interface IDnsMessage {
|
|
|
|
|
IList<DnsQuestion> Questions {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Int32 Size {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
Byte[] ToArray();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface IDnsMessageEntry {
|
|
|
|
|
DnsDomain Name {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
DnsRecordType Type {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
DnsRecordClass Class {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Int32 Size {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
Byte[] ToArray();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface IDnsResourceRecord : IDnsMessageEntry {
|
|
|
|
|
TimeSpan TimeToLive {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
Int32 DataLength {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
Byte[] Data {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface IDnsRequest : IDnsMessage {
|
|
|
|
|
Int32 Id {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
DnsOperationCode OperationCode {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
Boolean RecursionDesired {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface IDnsResponse : IDnsMessage {
|
|
|
|
|
Int32 Id {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
IList<IDnsResourceRecord> AnswerRecords {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
IList<IDnsResourceRecord> AuthorityRecords {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
IList<IDnsResourceRecord> AdditionalRecords {
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
Boolean IsRecursionAvailable {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
Boolean IsAuthorativeServer {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
Boolean IsTruncated {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
DnsOperationCode OperationCode {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
DnsResponseCode ResponseCode {
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface IDnsRequestResolver {
|
|
|
|
|
Task<DnsClientResponse> Request(DnsClientRequest request);
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-12-04 18:57:18 +01:00
|
|
|
|
}
|