private void WriteResourceRecord(BinaryWriter message_writer, ResourceRecordCollection resources) { foreach (ResourceRecord rr in resources) { WriteResourceString(message_writer, rr.Name); message_writer.Write(CheckSum.ntohs((ushort)rr.Type)); message_writer.Write(CheckSum.ntohs((ushort)rr.Class)); message_writer.Write(CheckSum.ntohl((uint)rr.TimeToLive)); // RDLength (Get Resource Data Length) switch (rr.Type) { case Types.A: { Address rrA = (Address)rr; message_writer.Write(CheckSum.ntohs(4)); message_writer.Write(rrA.IP.GetAddressBytes()); } break; case Types.AAAA: { Address rrA = (Address)rr; message_writer.Write(CheckSum.ntohs(16)); message_writer.Write(rrA.IP.GetAddressBytes()); } break; case Types.CNAME: { WriteResourceString(message_writer, rr.RText, true); } break; }; } }
public DnsResponse(int ID, bool AA, bool TC, bool RD, bool RA, int RC) { this._QueryID = ID; this._AuthorativeAnswer = AA; this._IsTruncated = TC; this._RecursionDesired = RD; this._RecursionAvailable = RA; this._ResponseCode = (ResponseCodes)RC; this._ResourceRecords = new ResourceRecordCollection(); this._Answers = new ResourceRecordCollection(); this._Authorities = new ResourceRecordCollection(); this._AdditionalRecords = new ResourceRecordCollection(); }
public DnsResponse(int ID, bool AA, bool TC, bool RD, bool RA, int RC) { QueryID = ID; AuthorativeAnswer = AA; IsTruncated = TC; RecursionRequested = RD; RecursionAvailable = RA; ResponseCode = (ResponseCodes)RC; _ResourceRecords = new ResourceRecordCollection(); Answers = new ResourceRecordCollection(); Authorities = new ResourceRecordCollection(); AdditionalRecords = new ResourceRecordCollection(); }
public static IEnumerable<IPAddress> GetAddresses(ResourceRecordCollection s) { ISet<IPAddress> r = new HashSet<IPAddress>(); if (s == null) { return r; } foreach (ResourceRecord rr in s) { if (rr.Type == Types.A || rr.Type == Types.AAAA) { Address rrA = (Address)rr; r.Add(rrA.IP); } } return r; }
public static IEnumerable<string> FetchAddresses(ResourceRecordCollection s) { ISet<string> r = new HashSet<string>(); if (s == null) { return r; } foreach (ResourceRecord rr in s) { if (rr.Type == Types.A || rr.Type == Types.AAAA) { Address rrA = (Address)rr; r.Add(rrA.IP.ToString()); } else if (rr.Type == Types.CNAME) { r.Add(rr.RText); } } return r; }