internal override DnsResourceData CreateInstance(DataSegment data)
        {
            int         offset      = 0;
            DataSegment dataSegment = DnsResourceData.ReadString(data, ref offset);

            if (dataSegment == null)
            {
                return((DnsResourceData)null);
            }
            return((DnsResourceData) new DnsResourceDataString(dataSegment));
        }
Exemple #2
0
        internal static List <DataSegment> ReadStrings(DataSegment data, int numExpected = 0)
        {
            List <DataSegment> list = new List <DataSegment>(numExpected);
            int offset = 0;

            while (offset != data.Length)
            {
                DataSegment dataSegment = DnsResourceData.ReadString(data, ref offset);
                if (dataSegment == null)
                {
                    return((List <DataSegment>)null);
                }
                list.Add(dataSegment);
            }
            return(list);
        }
Exemple #3
0
        internal override DnsResourceData CreateInstance(DnsDatagram dns, int offsetInDns, int length)
        {
            if (length < 8)
            {
                return((DnsResourceData)null);
            }
            ushort      order      = dns.ReadUShort(offsetInDns, Endianity.Big);
            ushort      preference = dns.ReadUShort(offsetInDns + 2, Endianity.Big);
            DataSegment data       = dns.Subsegment(offsetInDns + 4, length - 4);
            int         offset     = 0;
            DataSegment flags      = DnsResourceData.ReadString(data, ref offset);

            if (flags == null || !DnsResourceDataNamingAuthorityPointer.IsLegalFlags(flags))
            {
                return((DnsResourceData)null);
            }
            DataSegment services = DnsResourceData.ReadString(data, ref offset);

            if (services == null)
            {
                return((DnsResourceData)null);
            }
            DataSegment regularExpression = DnsResourceData.ReadString(data, ref offset);

            if (regularExpression == null)
            {
                return((DnsResourceData)null);
            }
            DnsDomainName domainName;
            int           numBytesRead;

            if (!DnsDomainName.TryParse(dns, offsetInDns + 4 + offset, length - 4 - offset, out domainName, out numBytesRead))
            {
                return((DnsResourceData)null);
            }
            if (4 + offset + numBytesRead != length)
            {
                return((DnsResourceData)null);
            }
            return((DnsResourceData) new DnsResourceDataNamingAuthorityPointer(order, preference, flags, services, regularExpression, domainName));
        }
        internal override DnsResourceData CreateInstance(DataSegment data)
        {
            if (data.Length < 4)
            {
                return((DnsResourceData)null);
            }
            ushort             priority = data.ReadUShort(0, Endianity.Big);
            ushort             weight   = data.ReadUShort(2, Endianity.Big);
            List <DataSegment> list     = new List <DataSegment>();
            int offset = 4;

            while (data.Length > offset)
            {
                DataSegment dataSegment = DnsResourceData.ReadString(data, ref offset);
                if (dataSegment == null)
                {
                    return((DnsResourceData)null);
                }
                list.Add(dataSegment);
            }
            return((DnsResourceData) new DnsResourceDataUri(priority, weight, (IList <DataSegment>)list));
        }