예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DnsQueryResult"/> class.
        /// </summary>
        /// <param name="response">The response.</param>
        internal DnsQueryResult(DnsClient.IDnsResponse response)
            : this()
        {
            Id = response.Id;
            IsAuthoritativeServer = response.IsAuthorativeServer;
            IsRecursionAvailable  = response.IsRecursionAvailable;
            IsTruncated           = response.IsTruncated;
            OperationCode         = response.OperationCode;
            ResponseCode          = response.ResponseCode;

            if (response.AnswerRecords != null)
            {
                foreach (var record in response.AnswerRecords)
                {
                    AnswerRecords.Add(new DnsRecord(record));
                }
            }

            if (response.AuthorityRecords != null)
            {
                foreach (var record in response.AuthorityRecords)
                {
                    AuthorityRecords.Add(new DnsRecord(record));
                }
            }

            if (response.AdditionalRecords != null)
            {
                foreach (var record in response.AdditionalRecords)
                {
                    AdditionalRecords.Add(new DnsRecord(record));
                }
            }
        }
예제 #2
0
파일: Message.cs 프로젝트: schmitch/net-dns
        /// <inheritdoc />
        public override IWireSerialiser Read(WireReader reader)
        {
            Id = reader.ReadUInt16();
            var flags = reader.ReadUInt16();

            QR      = (flags & 0x8000) == 0x8000;
            AA      = (flags & 0x0400) == 0x0400;
            TC      = (flags & 0x0200) == 0x0200;
            RD      = (flags & 0x0100) == 0x0100;
            RA      = (flags & 0x0080) == 0x0080;
            opcode4 = (byte)((flags & 0x7800) >> 11);
            Z       = (flags & 0x0040) >> 6;
            AD      = (flags & 0x0020) == 0x0020;
            CD      = (flags & 0x0010) == 0x0010;
            Status  = (MessageStatus)(flags & 0x000F);
            var qdcount = reader.ReadUInt16();
            var ancount = reader.ReadUInt16();
            var nscount = reader.ReadUInt16();
            var arcount = reader.ReadUInt16();

            for (var i = 0; i < qdcount; ++i)
            {
                var question = (Question) new Question().Read(reader);
                Questions.Add(question);
            }
            for (var i = 0; i < ancount; ++i)
            {
                var rr = (ResourceRecord) new ResourceRecord().Read(reader);
                Answers.Add(rr);
            }
            for (var i = 0; i < nscount; ++i)
            {
                var rr = (ResourceRecord) new ResourceRecord().Read(reader);
                AuthorityRecords.Add(rr);
            }
            for (var i = 0; i < arcount; ++i)
            {
                var rr = (ResourceRecord) new ResourceRecord().Read(reader);
                AdditionalRecords.Add(rr);
            }

            return(this);
        }