public byte[] GetBytes() { using (var memoryStream = new MemoryStream()) using (var writer = new DnsWriter(0, memoryStream)) { var dnsNameWriter = new DnsNameWriter(memoryStream); writer.Write(this.MessageId.ToNetworkByteOrder()); writer.Write(((ushort)this.Flags).ToNetworkByteOrder()); writer.Write(this.QueryCount.ToNetworkByteOrder()); writer.Write(((ushort)this.AnswerRecords.Count).ToNetworkByteOrder()); writer.Write(((ushort)this.NameServerRecords.Count).ToNetworkByteOrder()); writer.Write(((ushort)this.AdditionalRecords.Count).ToNetworkByteOrder()); foreach (var resourceRecord in this.AnswerRecords) { resourceRecord.Write(dnsNameWriter, writer); } foreach (var resourceRecord in this.NameServerRecords) { resourceRecord.Write(dnsNameWriter, writer); } foreach (var resourceRecord in this.AdditionalRecords) { resourceRecord.Write(dnsNameWriter, writer); } return memoryStream.ToArray(); } }
public void Write(DnsName dnsName) { using (var writer = new DnsWriter(0, this.stream)) { this.rootLabelNode.Write(dnsName, writer); } }
public byte[] GetBytes(DnsName dnsName) { using (var stream = new MemoryStream()) using (var writer = new DnsWriter(this.stream.Position, stream)) { this.Write(dnsName, writer); return stream.ToArray(); } }
internal void Write(DnsNameWriter dnsNameWriter, DnsWriter dnsWriter) { dnsNameWriter.Write(this.Name); dnsWriter.Write(((ushort)this.Type).ToNetworkByteOrder()); dnsWriter.Write(((ushort)this.Class).ToNetworkByteOrder()); dnsWriter.Write(this.TimeToLive.ToNetworkByteOrder()); var data = this.GetData(dnsNameWriter); dnsWriter.Write(((ushort)data.Length).ToNetworkByteOrder()); dnsWriter.Write(data); }
private void Write(DnsWriter dnsWriter) { if (this.position.HasValue) { this.WritePointer(dnsWriter); } else { this.WriteLabel(dnsWriter); if (this.parent != null) { this.parent.Write(dnsWriter); } } }
public void Write(IEnumerable<string> labels, DnsWriter dnsWriter) { var node = this.Create(labels); node.Write(dnsWriter); }
private void Write(DnsName dnsName, DnsWriter dnsWriter) { this.rootLabelNode.Write(dnsName, dnsWriter); }
private void WritePointer(DnsWriter dnsWriter) { var pointer = (ushort)(this.position.Value | 0xc000); dnsWriter.Write(pointer.ToNetworkByteOrder()); }
private void WriteLabel(DnsWriter dnsWriter) { this.position = (ushort)dnsWriter.Position; var bytes = Encoding.ASCII.GetBytes(this.label); dnsWriter.Write((byte)bytes.Length); dnsWriter.Write(bytes); }