]> git.proxmox.com Git - pve-network.git/commitdiff
use canonical ipv6 address (RFC 5952) everywhere
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 3 Dec 2020 09:19:38 +0000 (10:19 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 18 Dec 2020 16:58:22 +0000 (17:58 +0100)
we want only 1 format for ipam database

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/Network/SDN/Dns/PowerdnsPlugin.pm
PVE/Network/SDN/Ipams/PVEPlugin.pm
PVE/Network/SDN/Subnets.pm

index b00432e2b59f1af4b947699691531e164d288c29..3fbd595b2b510f99e3f882eb1b27e2bc0a1b6b69 100644 (file)
@@ -7,8 +7,7 @@ use PVE::Cluster;
 use PVE::Tools;
 use JSON;
 use Net::IP;
-use NetAddr::IP;
-
+use NetAddr::IP qw(:lower);
 use base('PVE::Network::SDN::Dns::Plugin');
 
 sub type {
index e4c9ef7878395c64959503bf86887481dca1c71e..a2e7d86a91d69310708952f390ca8bf9f1ec26b0 100644 (file)
@@ -6,7 +6,8 @@ use PVE::INotify;
 use PVE::Cluster qw(cfs_read_file cfs_write_file cfs_register_file cfs_lock_file);
 use PVE::Tools;
 use JSON;
-use NetAddr::IP;
+use NetAddr::IP qw(:lower);
+
 use Net::IP;
 use Digest::SHA;
 
@@ -134,7 +135,7 @@ sub add_next_freeip {
            while(1) {
                $iplist++;
                last if $iplist eq $broadcast;
-               my $ip = $iplist->addr();
+               my $ip = $iplist->canon();
                next if defined($dbsubnet->{ips}->{$ip});
                $freeip = $ip;
                last;
index 74a538c647053c76c81433b71f18112dcec50f41..81970a1a54caba87eff8be6be200296825c9a816 100644 (file)
@@ -5,6 +5,7 @@ use warnings;
 
 use Net::Subnet qw(subnet_matcher);
 use Net::IP;
+use NetAddr::IP qw(:lower);
 
 use PVE::Cluster qw(cfs_read_file cfs_write_file cfs_lock_file);
 use PVE::Network::SDN::Dns;
@@ -213,6 +214,9 @@ sub add_ip {
 
     return if !$subnet || !$ip; 
 
+    my $ipaddr = new NetAddr::IP($ip);
+    $ip = $ipaddr->canon();
+
     my $ipamid = $zone->{ipam};
     my $dns = $zone->{dns};
     my $dnszone = $zone->{dnszone};
@@ -255,7 +259,10 @@ sub add_ip {
 sub del_ip {
     my ($zone, $subnetid, $subnet, $ip, $hostname) = @_;
 
-    return if !$subnet;
+    return if !$subnet || !$ip;
+
+    my $ipaddr = new NetAddr::IP($ip);
+    $ip = $ipaddr->canon();
 
     my $ipamid = $zone->{ipam};
     my $dns = $zone->{dns};