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