Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }