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 );
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); }
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)));
protected static CreateScopeResolverInformation GetResolverInformation(IScopeChangeCommand request) => new CreateScopeResolverInformation { PropertiesAndValues = request.Resolver.PropertiesAndValues, Typename = request.Resolver.Typename, };