/// <summary> /// Queries a dns server for specified records. /// </summary> /// <param name="name"> Domain, that should be queried </param> /// <param name="recordType"> Type the should be queried </param> /// <param name="recordClass"> Class the should be queried </param> /// <param name="options"> Options for the query </param> /// <returns> The complete response of the dns server </returns> public DnsMessage Resolve(DomainName name, RecordType recordType = RecordType.A, RecordClass recordClass = RecordClass.INet, DnsQueryOptions options = null) { if (name == null) throw new ArgumentNullException(nameof(name), "Name must be provided"); DnsMessage message = new DnsMessage() { IsQuery = true, OperationCode = OperationCode.Query, IsRecursionDesired = true, IsEDnsEnabled = true }; if (options == null) { message.IsRecursionDesired = true; message.IsEDnsEnabled = true; } else { message.IsRecursionDesired = options.IsRecursionDesired; message.IsCheckingDisabled = options.IsCheckingDisabled; message.EDnsOptions = options.EDnsOptions; } message.Questions.Add(new DnsQuestion(name, recordType, recordClass)); return SendMessage(message); }
/// <summary> /// Queries a dns server for specified records. /// </summary> /// <param name="name"> Domain, that should be queried </param> /// <param name="recordType"> Type the should be queried </param> /// <param name="recordClass"> Class the should be queried </param> /// <param name="options"> Options for the query </param> /// <returns> The complete response of the dns server </returns> public DnsMessage Resolve(DomainName name, RecordType recordType = RecordType.A, RecordClass recordClass = RecordClass.INet, DnsQueryOptions options = null) { if (name == null) { throw new ArgumentNullException(nameof(name), "Name must be provided"); } DnsMessage message = new DnsMessage() { IsQuery = true, OperationCode = OperationCode.Query, IsRecursionDesired = true, IsEDnsEnabled = true }; if (options == null) { message.IsRecursionDesired = true; message.IsEDnsEnabled = true; } else { message.IsRecursionDesired = options.IsRecursionDesired; message.IsCheckingDisabled = options.IsCheckingDisabled; message.EDnsOptions = options.EDnsOptions; } message.Questions.Add(new DnsQuestion(name, recordType, recordClass)); return(SendMessage(message)); }
/// <summary> /// Queries a dns server for specified records as an asynchronous operation. /// </summary> /// <param name="name"> Domain, that should be queried </param> /// <param name="recordType"> Type the should be queried </param> /// <param name="recordClass"> Class the should be queried </param> /// <param name="options"> Options for the query </param> /// <param name="token"> The token to monitor cancellation requests </param> /// <returns> The complete response of the dns server </returns> public Task<DnsMessage> ResolveAsync(DomainName name, RecordType recordType = RecordType.A, RecordClass recordClass = RecordClass.INet, DnsQueryOptions options = null, CancellationToken token = default(CancellationToken)) { if (name == null) throw new ArgumentNullException(nameof(name), "Name must be provided"); DnsMessage message = new DnsMessage() { IsQuery = true, OperationCode = OperationCode.Query, IsRecursionDesired = true, IsEDnsEnabled = true }; if (options == null) { message.IsRecursionDesired = true; message.IsEDnsEnabled = true; } else { message.IsRecursionDesired = options.IsRecursionDesired; message.IsCheckingDisabled = options.IsCheckingDisabled; message.EDnsOptions = options.EDnsOptions; } message.Questions.Add(new DnsQuestion(name, recordType, recordClass)); return SendMessageAsync(message, token); }