コード例 #1
0
        public void GetUniqueIdentifier()
        {
            Random random = new Random();

            IPv6Address address = IPv6Address.FromString("fced::1");

            Guid deviceId = random.NextGuid();

            Mock <ISerializer> serializerMock = new Mock <ISerializer>(MockBehavior.Strict);

            serializerMock.Setup(x => x.Deserialze <Guid>(deviceId.ToString())).Returns(deviceId).Verifiable();

            Mock <IDeviceService> deviceServiceMock = new Mock <IDeviceService>(MockBehavior.Strict);

            deviceServiceMock.Setup(x => x.GetIPv6LinkLocalAddressFromDevice(deviceId)).Returns(address);

            var resolver = new DeviceBasedDHCPv6PeerAddressResolver(deviceServiceMock.Object);

            resolver.ApplyValues(new Dictionary <String, String> {
                { "DeviceId", deviceId.ToString() },
            }, serializerMock.Object);

            Assert.Equal(address.GetBytes(), resolver.GetUniqueIdentifier(null));

            serializerMock.Verify();
            deviceServiceMock.Verify();
        }
コード例 #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            IPv6Address address = (IPv6Address)value;

            Byte[] bytes = address.GetBytes();
            writer.WriteValue(Convert.ToBase64String(bytes));
        }
コード例 #3
0
        public void IPv6Address_FromString(String input, Boolean parseable, Byte[] expectedByteSequence)
        {
            if (parseable == false)
            {
                Assert.ThrowsAny <Exception>(() => IPv6Address.FromString(input));
                return;
            }

            IPv6Address address = IPv6Address.FromString(input);

            Byte[] actual = address.GetBytes();
            Assert.Equal(expectedByteSequence, actual);
        }
コード例 #4
0
 public DHCPv6PacketIdentityAssociationAddressSuboption(
     IPv6Address address, TimeSpan preferedLifetime, TimeSpan validLifetime,
     IEnumerable <DHCPv6PacketSuboption> suboptions)
     : base((UInt16)DHCPv6PacketSuboptionsType.IdentityAssociationAddress,
            ByteHelper.ConcatBytes(
                address.GetBytes(),
                ByteHelper.GetBytes((UInt32)preferedLifetime.TotalSeconds),
                ByteHelper.GetBytes((UInt32)validLifetime.TotalSeconds),
                ByteHelper.ConcatBytes(suboptions.Select(x => x.GetByteStream()))
                ))
 {
     Address           = address;
     PreferredLifetime = preferedLifetime;
     ValidLifetime     = validLifetime;
     Suboptions        = new List <DHCPv6PacketSuboption>(suboptions);
 }
コード例 #5
0
 public DHCPv6PacketIdentityAssociationPrefixDelegationSuboption(
     TimeSpan preferedLifetime, TimeSpan validLifetime, Byte prefixLength, IPv6Address address,
     IEnumerable <DHCPv6PacketSuboption> suboptions)
     : base((UInt16)DHCPv6PacketSuboptionsType.IdentityAssociationPrefixDelegation,
            ByteHelper.ConcatBytes(
                ByteHelper.GetBytes((UInt32)preferedLifetime.TotalSeconds),
                ByteHelper.GetBytes((UInt32)validLifetime.TotalSeconds),
                new Byte[] { prefixLength },
                address.GetBytes(),
                ByteHelper.ConcatBytes(suboptions.Select(x => x.GetByteStream()))
                ))
 {
     Address           = address;
     PreferredLifetime = preferedLifetime;
     ValidLifetime     = validLifetime;
     PrefixLength      = prefixLength;
     Suboptions        = new List <DHCPv6PacketSuboption>(suboptions);
 }
コード例 #6
0
        public void GetUniqueIdentifier()
        {
            IPv6Address address = IPv6Address.FromString("fced::1");

            Mock <ISerializer> serializerMock = new Mock <ISerializer>(MockBehavior.Strict);

            serializerMock.Setup(x => x.Deserialze <IPv6Address>(address.ToString())).Returns(address).Verifiable();
            serializerMock.Setup(x => x.Deserialze <Boolean>("true")).Returns(true).Verifiable();

            var resolver = new DHCPv6PeerAddressResolver();

            resolver.ApplyValues(new Dictionary <String, String> {
                { "PeerAddress", address.ToString() },
                { "IsUnique", "true" },
            }, serializerMock.Object);

            Assert.Equal(address.GetBytes(), resolver.GetUniqueIdentifier(null));
        }
コード例 #7
0
    /// <summary>
    /// Packages up the IPv6 header and the given payload into a byte array
    /// suitable for sending on a socket.
    /// </summary>
    /// <param name="payLoad">Data encapsulated by the IPv6 header</param>
    /// <returns>Byte array of the IPv6 packet and payload</returns>
    public override byte[] GetProtocolPacketBytes(byte[] payLoad)
    {
        byte[] byteValue, ipv6Packet;
        int    offset = 0;

        ipv6Packet           = new byte[Ipv6HeaderLength + payLoad.Length];
        ipv6Packet[offset++] = (byte)((ipVersion << 4) | ((ipTrafficClass >> 4) & 0xF));

        // tmpbyte1 = (byte) ( ( ipTrafficClass << 4) & 0xF0);
        // tmpbyte2 = (byte) ( ( ipFlow >> 16 ) & 0xF );

        ipv6Packet[offset++] = (byte)((uint)((ipTrafficClass << 4) & 0xF0) | (uint)((Flow >> 16) & 0xF));
        ipv6Packet[offset++] = (byte)((Flow >> 8) & 0xFF);
        ipv6Packet[offset++] = (byte)(Flow & 0xFF);

        Console.WriteLine("Next header = {0}", ipNextHeader);

        byteValue = BitConverter.GetBytes(ipPayloadLength);
        Array.Copy(byteValue, 0, ipv6Packet, offset, byteValue.Length);
        offset += byteValue.Length;

        ipv6Packet[offset++] = (byte)ipNextHeader;
        ipv6Packet[offset++] = (byte)ipHopLimit;

        byteValue = ipSourceAddress.GetBytes();
        Array.Copy(byteValue, 0, ipv6Packet, offset, byteValue.Length);
        offset += byteValue.Length;

        byteValue = ipDestinationAddress.GetBytes();
        Array.Copy(byteValue, 0, ipv6Packet, offset, byteValue.Length);
        offset += byteValue.Length;

        Array.Copy(payLoad, 0, ipv6Packet, offset, payLoad.Length);

        return(ipv6Packet);
    }
コード例 #8
0
 public DHCPv6PacketIPAddressOption(UInt16 code, IPv6Address address) :
     base(code, address.GetBytes())
 {
     Address = address;
 }