Example #1
0
 protected static DHCPv4ScopeAddressProperties GetScopeAddressProperties(IScopeChangeCommand request) =>
 request.AddressProperties.DynamicRenewTime == null ?
 new DHCPv4ScopeAddressProperties
 (
     IPv4Address.FromString(request.AddressProperties.Start),
     IPv4Address.FromString(request.AddressProperties.End),
     request.AddressProperties.ExcludedAddresses.Select(x => IPv4Address.FromString(x)),
     leaseTime: request.AddressProperties.LeaseTime,
     renewalTime: request.AddressProperties.RenewalTime,
     preferredLifetime: request.AddressProperties.PreferredLifetime,
     reuseAddressIfPossible: request.AddressProperties.ReuseAddressIfPossible,
     addressAllocationStrategy: (Core.Scopes.ScopeAddressProperties <DHCPv4ScopeAddressProperties, IPv4Address> .AddressAllocationStrategies?)request.AddressProperties.AddressAllocationStrategy,
     supportDirectUnicast: request.AddressProperties.SupportDirectUnicast,
     acceptDecline: request.AddressProperties.AcceptDecline,
     informsAreAllowd: request.AddressProperties.InformsAreAllowd,
     maskLength: request.AddressProperties.MaskLength
 ) : new DHCPv4ScopeAddressProperties
     (
         IPv4Address.FromString(request.AddressProperties.Start),
         IPv4Address.FromString(request.AddressProperties.End),
         request.AddressProperties.ExcludedAddresses.Select(x => IPv4Address.FromString(x)),
         GetDynamicRenewTime(request.AddressProperties.DynamicRenewTime),
         reuseAddressIfPossible: request.AddressProperties.ReuseAddressIfPossible,
         addressAllocationStrategy: (Core.Scopes.ScopeAddressProperties <DHCPv4ScopeAddressProperties, IPv4Address> .AddressAllocationStrategies?)request.AddressProperties.AddressAllocationStrategy,
         supportDirectUnicast: request.AddressProperties.SupportDirectUnicast,
         acceptDecline: request.AddressProperties.AcceptDecline,
         informsAreAllowd: request.AddressProperties.InformsAreAllowd,
         maskLength: request.AddressProperties.MaskLength
     );
Example #2
0
        protected static DHCPv4ScopeProperties GetScopeProperties(IScopeChangeCommand request)
        {
            List <DHCPv4ScopeProperty> properties = new List <DHCPv4ScopeProperty>();
            List <Byte> optionsToRemove           = new();

            foreach (var item in request.Properties ?? Array.Empty <DHCPv4ScopePropertyRequest>())
            {
                if (item.MarkAsRemovedInInheritance == true)
                {
                    optionsToRemove.Add(item.OptionCode);
                }
                else
                {
                    switch (item)
                    {
                    case DHCPv4AddressListScopePropertyRequest property:
                        properties.Add(new DHCPv4AddressListScopeProperty(item.OptionCode, property.Addresses.Select(x => IPv4Address.FromString(x)).ToList()));
                        break;

                    case DHCPv4AddressScopePropertyRequest property:
                        properties.Add(new DHCPv4AddressScopeProperty(item.OptionCode, IPv4Address.FromString(property.Address)));
                        break;

                    case DHCPv4BooleanScopePropertyRequest property:
                        properties.Add(new DHCPv4BooleanScopeProperty(item.OptionCode, property.Value));
                        break;

                    case DHCPv4NumericScopePropertyRequest property:
                        properties.Add(new DHCPv4NumericValueScopeProperty(item.OptionCode, property.Value, property.NumericType, item.Type));
                        break;

                    case DHCPv4TextScopePropertyRequest property:
                        properties.Add(new DHCPv4TextScopeProperty(item.OptionCode, property.Value));
                        break;

                    case DHCPv4TimeScopePropertyRequest property:
                        properties.Add(new DHCPv4TimeScopeProperty(item.OptionCode, false, property.Value));
                        break;

                    default:
                        break;
                    }
                }
            }

            var result = new DHCPv4ScopeProperties(properties);

            foreach (var item in optionsToRemove)
            {
                result.RemoveFromInheritance(item);
            }

            return(result);
        }
Example #3
0
 protected static DHCPv6ScopeAddressProperties GetScopeAddressProperties(IScopeChangeCommand request) =>
 request.AddressProperties.DynamicRenewTime == null ?
 new DHCPv6ScopeAddressProperties
 (
     IPv6Address.FromString(request.AddressProperties.Start),
     IPv6Address.FromString(request.AddressProperties.End),
     request.AddressProperties.ExcludedAddresses.Select(x => IPv6Address.FromString(x)),
     request.AddressProperties.T1 == null ? null : DHCPv6TimeScale.FromDouble(request.AddressProperties.T1.Value),
     request.AddressProperties.T2 == null ? null : DHCPv6TimeScale.FromDouble(request.AddressProperties.T2.Value),
     preferredLifeTime: request.AddressProperties.PreferredLifeTime,
     validLifeTime: request.AddressProperties.ValidLifeTime,
     reuseAddressIfPossible: request.AddressProperties.ReuseAddressIfPossible,
     addressAllocationStrategy: (Beer.DaAPI.Core.Scopes.ScopeAddressProperties <DHCPv6ScopeAddressProperties, IPv6Address> .AddressAllocationStrategies?)request.AddressProperties.AddressAllocationStrategy,
     supportDirectUnicast: request.AddressProperties.SupportDirectUnicast,
     acceptDecline: request.AddressProperties.AcceptDecline,
     informsAreAllowd: request.AddressProperties.InformsAreAllowd,
     rapitCommitEnabled: request.AddressProperties.RapitCommitEnabled,
     prefixDelgationInfo: request.AddressProperties.PrefixDelgationInfo == null ? null :
     DHCPv6PrefixDelgationInfo.FromValues(
         IPv6Address.FromString(request.AddressProperties.PrefixDelgationInfo.Prefix),
         new IPv6SubnetMaskIdentifier(request.AddressProperties.PrefixDelgationInfo.PrefixLength),
         new IPv6SubnetMaskIdentifier(request.AddressProperties.PrefixDelgationInfo.AssingedPrefixLength))
 ) : new DHCPv6ScopeAddressProperties
     (
         IPv6Address.FromString(request.AddressProperties.Start),
         IPv6Address.FromString(request.AddressProperties.End),
         request.AddressProperties.ExcludedAddresses.Select(x => IPv6Address.FromString(x)),
         GetDynamicRenewTime(request.AddressProperties.DynamicRenewTime),
         reuseAddressIfPossible: request.AddressProperties.ReuseAddressIfPossible,
         addressAllocationStrategy: (Beer.DaAPI.Core.Scopes.ScopeAddressProperties <DHCPv6ScopeAddressProperties, IPv6Address> .AddressAllocationStrategies?)request.AddressProperties.AddressAllocationStrategy,
         supportDirectUnicast: request.AddressProperties.SupportDirectUnicast,
         acceptDecline: request.AddressProperties.AcceptDecline,
         informsAreAllowd: request.AddressProperties.InformsAreAllowd,
         rapitCommitEnabled: request.AddressProperties.RapitCommitEnabled,
         prefixDelgationInfo: request.AddressProperties.PrefixDelgationInfo == null ? null :
         DHCPv6PrefixDelgationInfo.FromValues(
             IPv6Address.FromString(request.AddressProperties.PrefixDelgationInfo.Prefix),
             new IPv6SubnetMaskIdentifier(request.AddressProperties.PrefixDelgationInfo.PrefixLength),
             new IPv6SubnetMaskIdentifier(request.AddressProperties.PrefixDelgationInfo.AssingedPrefixLength)));
Example #4
0
 protected static CreateScopeResolverInformation GetResolverInformation(IScopeChangeCommand request) =>
 new CreateScopeResolverInformation
 {
     PropertiesAndValues = request.Resolver.PropertiesAndValues,
     Typename            = request.Resolver.Typename,
 };