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); }
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; } } }