internal SOARecord(DnsReader br) { _mname = br.ReadDomain(); _rname = br.ReadDomain(); _serial = br.ReadInt32(); _refresh = br.ReadInt32(); _retry = br.ReadInt32(); _expire = br.ReadInt32(); _minimumTtl = br.ReadInt32(); }
/// <summary> /// Reads a domain name from the byte array. (RFC 1035 - 4.1.4.) /// </summary> public string ReadDomain() { StringBuilder domain = new StringBuilder(); int length = 0; while ((length = ReadByte()) != 0) { // top 2 bits set denotes domain name compression and to reference elsewhere if ((length & 0xc0) == 0xc0) { // work out the existing domain name, copy this pointer DnsReader newPointer = Copy(); // and move it to where specified here newPointer.Position = (length & 0x3f) << 8 | ReadByte(); // repeat call recursively domain.Append(newPointer.ReadDomain()); return(domain.ToString()); } // if not using compression, copy a char at a time to the domain name while (length > 0) { domain.Append(ReadChar()); length--; } // if size of next label isn't null (end of domain name) add a period ready for next label if (Peek() != 0) { domain.Append('.'); } } return(domain.ToString()); }
internal ResourceRecord(DnsReader br) { _domain = br.ReadDomain(); _qtype = (DnsType)br.ReadInt16(); _qclass = (DnsClass)br.ReadInt16(); _ttl = br.ReadInt32(); int recordLength = br.ReadInt16(); if (recordLength != 0) { switch (_qtype) { case DnsType.A: _record = new ARecord(br); break; case DnsType.CNAME: _record = new CNAMERecord(br); break; case DnsType.MX: _record = new MXRecord(br); break; case DnsType.NS: _record = new NSRecord(br); break; case DnsType.SOA: _record = new SOARecord(br); break; case DnsType.TXT: _record = new TXTRecord(br); break; case DnsType.PTR: _record = new PTRERecord(br); break; // NetBIOS related records case DnsType.NB: _record = new NBRecord(br); break; default: br += recordLength; break; } } }
internal Question(DnsReader br) { _domain = br.ReadDomain(); _qtype = (DnsType)br.ReadInt16(); _qclass = (DnsClass)br.ReadInt16(); }
internal CNAMERecord(DnsReader br) { _domain = br.ReadDomain(); }
internal NSRecord(DnsReader br) { _domainName = br.ReadDomain(); }
internal MXRecord(DnsReader br) { _preference = br.ReadInt16(); _domainName = br.ReadDomain(); }