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;