Files
puppet-ironic/lib/puppet/functions/ipv6_normalize_dnsmasq_ip_subnets.rb
Takashi Kajinami c4c5372851 Remove wrong TODO comment
The IPAddr.new().prefix function does not work as intended. This change
removes the TODO comment to use the function because we can't really
replace the current implementation by that built-in feature.

irb(main):001:0> IPAddr.new('ffff:ffff:ffff:ffff::').to_i.to_s(2).count("1")
=> 64
irb(main):002:0> IPAddr.new('ffff:ffff:ffff:ffff::').prefix
=> 128

Change-Id: I07a340e1716f6ab8db718b89bf4535f989df7929
2022-08-25 10:37:18 +09:00

36 lines
1.3 KiB
Ruby

Puppet::Functions.create_function(:ipv6_normalize_dnsmasq_ip_subnets) do
def ipv6_normalize_dnsmasq_ip_subnets(args)
require 'ipaddr'
result = []
args.each do |ip_subnet|
ip_subnet_dup = ip_subnet.dup
begin
if ip_subnet["netmask"]
if IPAddr.new(ip_subnet["netmask"]).ipv6?
prefix = IPAddr.new(ip_subnet["netmask"]).to_i.to_s(2).count("1")
Puppet.debug("Netmask #{ip_subnet["netmask"]} changed to prefix #{prefix}")
ip_subnet_dup["netmask"] = prefix
end
end
rescue IPAddr::AddressFamilyError, IPAddr::Error, IPAddr::InvalidAddressError, IPAddr::InvalidPrefixError => e
# Ignore it
end
begin
if ip_subnet["gateway"]
if IPAddr.new(ip_subnet["gateway"]).ipv6?
# draft-ietf-mif-dhcpv6-route-option-05 was never completed.
# https://datatracker.ietf.org/doc/draft-ietf-mif-dhcpv6-route-option/
# Remove the gateway key:value so that the option:router entry is
# not created in dnsmasq.conf.
ip_subnet_dup.delete("gateway")
end
end
rescue IPAddr::AddressFamilyError, IPAddr::Error, IPAddr::InvalidAddressError, IPAddr::InvalidPrefixError => e
# Ignore it
end
result << ip_subnet_dup
end
return result
end
end