コード例 #1
0
        private static void VerifyAnswer(DnsPacket dnsPacket, string StrAddressExpected, int ttl)
        {
            Assert.IsTrue(dnsPacket.TransactionId == 0x000a);
            //Assert.IsTrue(0x8180 == dnsPacket.Flags.Flag);
            Assert.IsTrue(dnsPacket.Flags.IsOpcodeValid);
            Assert.IsTrue(dnsPacket.Flags.Rd);
            Assert.IsTrue(dnsPacket.Flags.Qr);
            Assert.IsTrue(dnsPacket.Flags.Ra);
            Assert.IsTrue(1 == dnsPacket.Body.Qdcount);
            Assert.IsTrue(1 == dnsPacket.Body.Ancount);
            Assert.IsTrue(0 == dnsPacket.Body.Arcount);
            Assert.IsTrue(0 == dnsPacket.Body.Nscount);
            Assert.IsTrue(1 == dnsPacket.Body.Queries.Count);
            Assert.IsTrue(1 == dnsPacket.Body.Answers.Count);
            DnsPacket.Query q = dnsPacket.Body.Queries[0];
            Assert.IsTrue(DnsPacket.TypeType.Mx == q.Type);
            Assert.IsTrue(DnsPacket.ClassType.InClass == q.QueryClass);
            Assert.AreEqual(q.Name.GetFullName(), StrQueryDomainName);

            DnsPacket.Answer a = dnsPacket.Body.Answers[0];
            Assert.IsTrue(DnsPacket.ClassType.InClass == a.AnswerClass);
            Assert.IsTrue(ttl == a.Ttl);
            Assert.IsTrue(DnsPacket.TypeType.Mx == a.Type);
            Assert.AreEqual(a.Name.GetFullName(), StrQueryDomainName);
            Assert.IsTrue(a.Payload is MxInfo);
            MxInfo mi = (MxInfo)a.Payload;

            Assert.AreEqual(mi.Mx.GetFullName(), "smtpin.vvv.facebook.com");
            Assert.AreEqual(mi.Preference, 10);
        }
コード例 #2
0
            private void _read()
            {
                _name        = new DomainName(m_io, this, m_root);
                _type        = ((DnsPacket.TypeType)m_io.ReadU2be());
                _answerClass = ((DnsPacket.ClassType)m_io.ReadU2be());
                _ttl         = m_io.ReadS4be();
                _rdlength    = m_io.ReadU2be();
                switch (Type)
                {
                case DnsPacket.TypeType.Srv: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new Service(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.A: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new Address(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Cname: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new DomainName(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Ns: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new DomainName(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Soa: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new AuthorityInfo(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Mx: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new MxInfo(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Txt: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new TxtBody(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Ptr: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new DomainName(io___raw_payload, this, m_root);
                    break;
                }

                case DnsPacket.TypeType.Aaaa: {
                    __raw_payload = m_io.ReadBytes(Rdlength);
                    var io___raw_payload = new KaitaiStream(__raw_payload);
                    _payload = new AddressV6(io___raw_payload, this, m_root);
                    break;
                }

                default: {
                    _payload = m_io.ReadBytes(Rdlength);
                    break;
                }
                }
            }