IPMemBlockToString() public static method

Takes in an IP Address in dns format and returns a string. The format is abcd (byte[] {a, b, c, d}.
public static IPMemBlockToString ( MemBlock ip ) : String
ip MemBlock a memblock containing abcd.
return String
Beispiel #1
0
        /**
         * <summary>Creates a response given the entire packet.</summary>
         * <remarks>The entire packet must be given, because some name servers take
         * advantage of pointers to reduce their size.</remarks>
         * <param name="Data">The entire Dns packet.</param>
         * <param name="Start">The starting position of the Response.</param>
         */
        public Response(MemBlock Data, int Start)
        {
            int idx = 0;

            NameBlob = DnsPacket.RetrieveBlob(Data, Start, out idx);

            int type = (Data[idx++] << 8) + Data[idx++];

            Type = (DnsPacket.Types)type;

            CacheFlush = ((Data[idx] & 0x80) == 0x80) ? true : false;
            int rclass = ((Data[idx++] << 8) & 0x7F) + Data[idx++];

            Class = (DnsPacket.Classes)rclass;

            Ttl  = (Data[idx++] << 24);
            Ttl |= (Data[idx++] << 16);
            Ttl |= (Data[idx++] << 8);
            Ttl |= (Data[idx++]);

            RdLength  = (short)((Data[idx++] << 8) + Data[idx++]);
            RDataBlob = Data.Slice(idx, RdLength);

            if (Type == DnsPacket.Types.Ptr)
            {
                try {
                    Name = DnsPacket.PtrMemBlockToString(NameBlob);
                }
                catch {
                    Name = DnsPacket.HostnameMemBlockToString(NameBlob);
                }
                int End = 0;
                RDataBlob = DnsPacket.RetrieveBlob(Data, idx, out End);
                RData     = DnsPacket.HostnameMemBlockToString(RDataBlob);
            }
            else if (Type == DnsPacket.Types.A)
            {
                Name  = DnsPacket.HostnameMemBlockToString(NameBlob);
                RData = DnsPacket.IPMemBlockToString(RDataBlob);
            }
            _icpacket = _packet = Data.Slice(Start, idx + RdLength - Start);
        }
Beispiel #2
0
        public void TestIP()
        {
            String   ip  = "208.80.152.3";
            MemBlock ipm = MemBlock.Reference(new byte[] { 0xd0, 0x50, 0x98, 0x03 });

            Assert.AreEqual(ip, DnsPacket.IPMemBlockToString(ipm),
                            "IPMemBlockToString");
            Assert.AreEqual(ipm, DnsPacket.IPStringToMemBlock(ip),
                            "IPStringToMemBlock");
            Assert.AreEqual(ip, DnsPacket.IPMemBlockToString(
                                DnsPacket.IPStringToMemBlock(ip)),
                            "IP String dual");
            Assert.AreEqual(ipm, DnsPacket.IPStringToMemBlock(
                                DnsPacket.IPMemBlockToString(ipm)),
                            "IP MemBlock dual");

            String   bad_ip  = "Test.Test.Test.123";
            MemBlock bad_ipm = null;

            try {
                bad_ipm = DnsPacket.IPStringToMemBlock(bad_ip);
            } catch {}
            Assert.AreEqual(null, bad_ipm, "Bad IP");
        }