internal DnsCnameRecord(DnsRecordHeader dnsHeader) : base(dnsHeader) {}
internal DnsAaaaRecord(DnsRecordHeader dnsHeader) : base(dnsHeader) { }
internal DnsX25Record(DnsRecordHeader dnsHeader) : base(dnsHeader) { }
internal DnsHinfoRecord(DnsRecordHeader dnsHeader) : base(dnsHeader) { }
internal DnsAfsdbRecord(DnsRecordHeader dnsHeader) : base(dnsHeader) { }
internal DnsIsdnRecord(DnsRecordHeader dnsHeader) : base(dnsHeader) { }
public static IDnsRecord Create(ref MemoryStream ms) { IDnsRecord dnsRecord; // Have to start out with an unknown record, since we have to parse the entire // header before we can determine the type of DNS record it is. // TODO: Consider other options. // start as an unknown type, then create a known type, parse the response // and return the object. //DnsRecordBase dr = new DnsUnknownRecord(); //dr.ParseRecordHeader(ref ms); DnsRecordHeader dnsHeader = new DnsRecordHeader(); dnsHeader.ParseRecordHeader(ref ms); switch (dnsHeader.NsType) { case NsType.A: { dnsRecord = new DnsARecord(dnsHeader); break; } case NsType.AAAA: { dnsRecord = new DnsAaaaRecord(dnsHeader); break; } case NsType.MX: { dnsRecord = new DnsMxRecord(dnsHeader); break; } case NsType.RP: { dnsRecord = new DnsRpRecord(dnsHeader); break; } case NsType.MR: { dnsRecord = new DnsMrRecord(dnsHeader); break; } case NsType.MB: { dnsRecord = new DnsMbRecord(dnsHeader); break; } case NsType.MG: { dnsRecord = new DnsMgRecord(dnsHeader); break; } case NsType.NS: { dnsRecord = new DnsNsRecord(dnsHeader); break; } case NsType.CNAME: { dnsRecord = new DnsCnameRecord(dnsHeader); break; } case NsType.PTR: { dnsRecord = new DnsPtrRecord(dnsHeader); break; } case NsType.HINFO: { dnsRecord = new DnsHinfoRecord(dnsHeader); break; } case NsType.MINFO: { dnsRecord = new DnsMinfoRecord(dnsHeader); break; } case NsType.X25: { dnsRecord = new DnsX25Record(dnsHeader); break; } case NsType.TXT: { dnsRecord = new DnsTxtRecord(dnsHeader); break; } case NsType.LOC: { dnsRecord = new DnsLocRecord(dnsHeader); break; } case NsType.SOA: { dnsRecord = new DnsSoaRecord(dnsHeader); break; } case NsType.SRV: { dnsRecord = new DnsSrvRecord(dnsHeader); break; } case NsType.AFSDB: { dnsRecord = new DnsAfsdbRecord(dnsHeader); break; } case NsType.ATMA: { dnsRecord = new DnsAtmaRecord(dnsHeader); break; } case NsType.ISDN: { dnsRecord = new DnsIsdnRecord(dnsHeader); break; } case NsType.RT: { dnsRecord = new DnsRtRecord(dnsHeader); break; } case NsType.WKS: { dnsRecord = new DnsWksRecord(dnsHeader); break; } default: { // Unknown type. parse and return the DnsUnknownRecord dnsRecord = new DnsUnknownRecord(dnsHeader); break; } } //dnsRecord.ParseRecordHeader(ref ms); dnsRecord.ParseRecord(ref ms); return dnsRecord; }