Beispiel #1
0
        public static bool HasOptionThisIPv4Adress(DHCPv4Packet result, DHCPv4OptionTypes optionType, IPv4Address address)
        {
            foreach (var item in result.Options)
            {
                if (item.OptionType == (Byte)optionType)
                {
                    Assert.IsAssignableFrom<DHCPv4PacketAddressOption>(item);

                    DHCPv4PacketAddressOption castedItem = (DHCPv4PacketAddressOption)item;
                    return castedItem.Address == address;
                }
            }

            return false;
        }
Beispiel #2
0
        public static void ChecKIfPropertyCorrelatesToOption(DHCPv4ScopeProperty property, DHCPv4PacketOption option)
        {
            Assert.NotNull(property);
            Assert.NotNull(option);

            Assert.Equal(property.OptionIdentifier, option.OptionType);

            if (property is DHCPv4AddressListScopeProperty castedProperty7)
            {
                Assert.IsAssignableFrom<DHCPv4PacketAddressListOption>(option);
                DHCPv4PacketAddressListOption castedOption = (DHCPv4PacketAddressListOption)option;

                Assert.Equal(castedProperty7.Addresses.OrderBy(x => x), castedOption.Addresses.OrderBy(x => x));
            }
            else if (property is DHCPv4AddressScopeProperty castedProperty6)
            {
                Assert.IsAssignableFrom<DHCPv4PacketAddressOption>(option);
                DHCPv4PacketAddressOption castedOption = (DHCPv4PacketAddressOption)option;

                Assert.Equal(castedProperty6.Address, castedOption.Address);
            }
            else if (property is DHCPv4BooleanScopeProperty castedProperty3)
            {
                Assert.IsAssignableFrom<DHCPv4PacketBooleanOption>(option);
                DHCPv4PacketBooleanOption castedOption = (DHCPv4PacketBooleanOption)option;

                Assert.Equal(castedProperty3.Value, castedOption.Value);
            }
            else if (property is DHCPv4BooleanScopeProperty castedProperty2)
            {
                Assert.IsAssignableFrom<DHCPv4PacketBooleanOption>(option);
                DHCPv4PacketBooleanOption castedOption = (DHCPv4PacketBooleanOption)option;

                Assert.Equal(castedProperty2.Value, castedOption.Value);
            }

            else if (property is DHCPv4NumericValueScopeProperty castedProperty)
            {
                Int64 value = 0;
                switch (castedProperty.NumericType)
                {
                    case DHCPv4NumericValueTypes.Byte:
                        Assert.IsAssignableFrom<DHCPv4PacketByteOption>(option);
                        value = ((DHCPv4PacketByteOption)option).Value;
                        break;
                    case DHCPv4NumericValueTypes.UInt16:
                        Assert.IsAssignableFrom<DHCPv4PacketUInt16Option>(option);
                        value = ((DHCPv4PacketUInt16Option)option).Value;
                        break;
                    case DHCPv4NumericValueTypes.UInt32:
                        Assert.IsAssignableFrom<DHCPv4PacketUInt32Option>(option);
                        value = ((DHCPv4PacketUInt32Option)option).Value;
                        break;
                    default:
                        break;
                }
            }
            else if (property is DHCPv4TextScopeProperty castedProperty4)
            {
                Assert.IsAssignableFrom<DHCPv4PacketTextOption>(option);
                DHCPv4PacketTextOption castedOption = (DHCPv4PacketTextOption)option;

                Assert.Equal(castedProperty4.Value, castedOption.Value);
            }
            else if (property is DHCPv4TimeScopeProperty castedProperty5)
            {
                Assert.IsAssignableFrom<DHCPv4PacketTimeSpanOption>(option);
                DHCPv4PacketTimeSpanOption castedOption = (DHCPv4PacketTimeSpanOption)option;

                Assert.Equal(castedProperty5.Value, castedOption.Value);
            }
            else
            {
                throw new NotImplementedException();
            }
        }