Net::IP doesn't seem to have a function for it and normalizing to the full quad-form is less then ideal if we inted to output IPv6 addresses returned by that function at some point.
Instead, use NetAddr::IP, which is already used in pve-network. Signed-off-by: Fabian Ebner <f.eb...@proxmox.com> --- New in v2. Introduces a new dependency on the libnetaddr-ip-perl package! src/PVE/Network.pm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/PVE/Network.pm b/src/PVE/Network.pm index 2d63a45..48268b1 100644 --- a/src/PVE/Network.pm +++ b/src/PVE/Network.pm @@ -10,6 +10,7 @@ use PVE::Tools qw(run_command lock_file); use File::Basename; use IO::Socket::IP; use Net::IP; +use NetAddr::IP qw(:lower); use POSIX qw(ECONNREFUSED); use Socket qw(NI_NUMERICHOST NI_NUMERICSERV); @@ -655,4 +656,13 @@ sub lock_network { return $res; } +# the canonical form of the given IP, i.e. dotted quad for IPv4 and RFC 5952 for IPv6 +sub canonical_ip { + my ($ip) = @_; + + my $ip_obj = NetAddr::IP->new($ip) or die "invalid IP string '$ip'\n"; + + return $ip_obj->canon(); +} + 1; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel