Exemplo n.º 1
0
 private DHCPv4ScopePropertyResponse GetScopePropertyResponse(DHCPv4ScopeProperty property)
 {
     return(property switch
     {
         DHCPv4AddressListScopeProperty item => new DHCPv4AddressListScopePropertyResponse
         {
             Addresses = item.Addresses.Select(x => x.ToString()).ToList(),
             OptionCode = item.OptionIdentifier,
             Type = item.ValueType,
         },
         DHCPv4AddressScopeProperty item => new DHCPv4AddressScopePropertyResponse
         {
             Value = item.Address.ToString(),
             OptionCode = item.OptionIdentifier,
             Type = item.ValueType,
         },
         DHCPv4BooleanScopeProperty item => new DHCPv4BooleanScopePropertyResponse
         {
             Value = item.Value,
             OptionCode = item.OptionIdentifier,
             Type = item.ValueType,
         },
         DHCPv4NumericValueScopeProperty item => new DHCPv4NumericScopePropertyResponse
         {
             Value = item.Value,
             NumericType = item.NumericType,
             Type = item.ValueType,
             OptionCode = item.OptionIdentifier,
         },
         DHCPv4TextScopeProperty item => new DHCPv4TextScopePropertyResponse
         {
             Value = item.Value,
             OptionCode = item.OptionIdentifier,
             Type = item.ValueType,
         },
         DHCPv4TimeScopeProperty item => new DHCPv4TimeScopePropertyResponse
         {
             Value = item.Value,
             OptionCode = item.OptionIdentifier,
             Type = item.ValueType,
         },
         _ => throw new NotImplementedException(),
     });
Exemplo n.º 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();
            }
        }