public RecordDS(RecordReader rr) { ushort length = rr.ReadUInt16(-2); KEYTAG = rr.ReadUInt16(); ALGORITHM = rr.ReadByte(); DIGESTTYPE = rr.ReadByte(); length -= 4; DIGEST = new byte[length]; DIGEST = rr.ReadBytes(length); }
public RR(RecordReader rr) { TimeLived = 0; NAME = rr.ReadDomainName(); Type = (Type)rr.ReadUInt16(); Class = (Class)rr.ReadUInt16(); TTL = rr.ReadUInt32(); RDLENGTH = rr.ReadUInt16(); RECORD = rr.ReadRecord(Type); RECORD.RR = this; }
public string ReadDomainName() { StringBuilder name = new StringBuilder(); int length = 0; // get the length of the first label 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 int nextLoc = (length & 0x3f) << 8 | ReadByte(); if (nextLoc != m_Position - 2) { RecordReader newRecordReader = new RecordReader(m_Data, nextLoc); name.Append(newRecordReader.ReadDomainName()); } return(name.ToString()); } // if not using compression, copy a char at a time to the domain name while (length > 0) { name.Append(ReadChar()); length--; } name.Append('.'); } if (name.Length == 0) { return("."); } else { return(name.ToString()); } }
public Response(IPEndPoint iPEndPoint, byte[] data) { Error = ""; Server = iPEndPoint; TimeStamp = DateTime.Now; MessageSize = data.Length; RecordReader rr = new RecordReader(data); Questions = new List <Question>(); Answers = new List <AnswerRR>(); Authorities = new List <AuthorityRR>(); Additionals = new List <AdditionalRR>(); header = new Header(rr); //if (header.RCODE != RCode.NoError) // Error = header.RCODE.ToString(); for (int intI = 0; intI < header.QDCOUNT; intI++) { Questions.Add(new Question(rr)); } for (int intI = 0; intI < header.ANCOUNT; intI++) { Answers.Add(new AnswerRR(rr)); } for (int intI = 0; intI < header.NSCOUNT; intI++) { Authorities.Add(new AuthorityRR(rr)); } for (int intI = 0; intI < header.ARCOUNT; intI++) { Additionals.Add(new AdditionalRR(rr)); } }
public RecordTXT(RecordReader rr) { TXT = rr.ReadString(); }
public RecordNS(RecordReader rr) { NSDNAME = rr.ReadDomainName(); }
public RecordA(RecordReader rr) { Address = new System.Net.IPAddress(rr.ReadBytes(4)); }
public Question(RecordReader rr) { QName = rr.ReadDomainName(); QType = (QType)rr.ReadUInt16(); QClass = (QClass)rr.ReadUInt16(); }
public RecordDNAME(RecordReader rr) { TARGET = rr.ReadDomainName(); }
public RecordMX(RecordReader rr) { PREFERENCE = rr.ReadUInt16(); EXCHANGE = rr.ReadDomainName(); }
public RecordCNAME(RecordReader rr) { CNAME = rr.ReadDomainName(); }
public RecordNSAP(RecordReader rr) { LENGTH = rr.ReadUInt16(); NSAPADDRESS = rr.ReadBytes(LENGTH); }
public AdditionalRR(RecordReader br) : base(br) { }
public AuthorityRR(RecordReader br) : base(br) { }
public AnswerRR(RecordReader br) : base(br) { }
public RecordPTR(RecordReader rr) { PTRDNAME = rr.ReadDomainName(); }