internal override void Write(DNSOutgoing out_Renamed) { if (addr != null) { sbyte[] buffer = SupportClass.ToSByteArray(addr.GetAddressBytes()); if (DNSConstants.TYPE_A == type) { // If we have a type A records we should answer with a IPv4 address if (addr.AddressFamily == AddressFamily.InterNetwork) { // All is good } else { // Get the last four bytes sbyte[] tempbuffer = buffer; buffer = new sbyte[4]; Array.Copy(tempbuffer, 12, buffer, 0, 4); } } else { // If we have a type AAAA records we should answer with a IPv6 address if (addr.AddressFamily == AddressFamily.InterNetwork) { sbyte[] tempbuffer = buffer; buffer = new sbyte[16]; for (int i = 0; i < 16; i++) { if (i < 11) { buffer[i] = tempbuffer[i - 12]; } else { buffer[i] = 0; } } } } int length = buffer.Length; out_Renamed.WriteBytes(buffer, 0, length); } }
internal override void Write(DNSOutgoing out_Renamed) { out_Renamed.WriteBytes(text, 0, text.Length); }
internal override void Write(DNSOutgoing out_Renamed) { if (addr != null) { sbyte[] buffer = SupportClass.ToSByteArray(addr.GetAddressBytes()); if (DNSConstants.TYPE_A == type) { // If we have a type A records we should answer with a IPv4 address if (addr.AddressFamily == AddressFamily.InterNetwork) { // All is good } else { // Get the last four bytes sbyte[] tempbuffer = buffer; buffer = new sbyte[4]; Array.Copy(tempbuffer, 12, buffer, 0, 4); } } else { // If we have a type AAAA records we should answer with a IPv6 address if (addr.AddressFamily == AddressFamily.InterNetwork) { sbyte[] tempbuffer = buffer; buffer = new sbyte[16]; for (int i = 0; i < 16; i++) { if (i < 11) buffer[i] = tempbuffer[i - 12]; else buffer[i] = 0; } } } int length = buffer.Length; out_Renamed.WriteBytes(buffer, 0, length); } }