public void WriteToBuffer(ref ByteBuffer buffer) { ushort length = (ushort)(4 + (family == AddressFamily.IPv4 ? AddressLength.IPv4 : AddressLength.IPv6)); STUNTypeLengthValue.WriteTypeLength(TYPE, length, ref buffer); ByteBuffer attr = new ByteBuffer(buffer.data, buffer.absPosition); // 4 bytes buffer.Put((byte)0); buffer.Put((byte)family); buffer.Put((ushort)port); if (AddressFamily.IPv4 == family) { ipv4.Write(ref buffer); } else { ipv6.Write(ref buffer); } // XOR attr[2] = (byte)(attr[2] ^ buffer[4]); attr[3] = (byte)(attr[3] ^ buffer[5]); for (int i = 4; i < length; i++) { attr[i] = (byte)(attr[i] ^ buffer[i]); } STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { ushort length = (ushort)(4 + (family == AddressFamily.IPv4 ? AddressLength.IPv4 : AddressLength.IPv6)); STUNTypeLengthValue.WriteTypeLength(TYPE, length, ref buffer); // 4 bytes buffer.Put((byte)0); buffer.Put((byte)family); buffer.Put((ushort)port); if (AddressFamily.IPv4 == family) { ipv4.Write(ref buffer); } else { ipv6.Write(ref buffer); } STUNTypeLengthValue.AddPadding(ref buffer); }