netmask/broadcast options are deprecated since buster
https://manpages.debian.org/buster/ifupdown/interfaces.5.en.html

This still read both "old address/netmask" or "address cidr" format,
but always convert it to cidr address format

Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 src/PVE/INotify.pm                            | 24 ++++++-------------
 test/etc_network_interfaces/t.bridge-v4-v6.pl | 11 ++-------
 .../t.create_network.pl                       | 12 +++-------
 .../t.list-interfaces.pl                      | 21 +++++++---------
 .../t.ovs_bridge_allow.pl                     |  7 +-----
 .../t.parsed_options.pl                       |  3 +--
 .../etc_network_interfaces/t.unknown_order.pl | 15 ++++--------
 .../t.update_network.pl                       | 16 ++++---------
 8 files changed, 31 insertions(+), 78 deletions(-)

diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm
index bbba7e2..aefdeac 100644
--- a/src/PVE/INotify.pm
+++ b/src/PVE/INotify.pm
@@ -1107,28 +1107,20 @@ sub __read_etc_network_interfaces {
        # map address and netmask to cidr
        if ($d->{address}) {
            if ($d->{netmask} && $d->{netmask} =~ m/^\d+$/) { # e.g. netmask 20
-               $d->{cidr} = $d->{address} . "/" . $d->{netmask};
+               $d->{address} = $d->{address} . "/" . $d->{netmask};
            } elsif ($d->{netmask} &&
                     (my $cidr = 
PVE::JSONSchema::get_netmask_bits($d->{netmask}))) { # e.g. netmask 
255.255.255.0
-               $d->{cidr} = $d->{address} . "/" . $cidr;
-           } elsif ($d->{address} =~ m!^(.*)/(\d+)$!) {
-               $d->{cidr} = $d->{address};
-               $d->{address} = $1;
-               $d->{netmask} = $2;
-           } else {
-               $d->{cidr} = $d->{address};
+               $d->{address} = $d->{address} . "/" . $cidr;
            }
+           #for api compatibility
+           $d->{cidr} = $d->{address} 
        }
 
        # map address6 and netmask6 to cidr6
        if ($d->{address6}) {
-           $d->{cidr6} = $d->{address6};
-           if ($d->{netmask6}) {
-               $d->{cidr6} .= "/" . $d->{netmask6};
-           } elsif ($d->{address6} =~ m!^(.*)/(\d+)$!) {
-               $d->{address6} = $1;
-               $d->{netmask6} = $2;
-           }
+           $d->{address6} .= "/" . $d->{netmask6} if $d->{address6} !~ 
m!^(.*)/(\d+)$! && $d->{netmask6};
+            #for api compatibility
+           $d->{cidr6} = $d->{address6} 
        }
 
        $d->{method} = 'manual' if !$d->{method};
@@ -1177,9 +1169,7 @@ sub __interface_to_string {
 
     $raw .= "iface $iface $family " . $d->{"method$suffix"} . "\n";
     $raw .= "\taddress  " . $d->{"address$suffix"} . "\n" if 
$d->{"address$suffix"};
-    $raw .= "\tnetmask  " . $d->{"netmask$suffix"} . "\n" if 
$d->{"netmask$suffix"};
     $raw .= "\tgateway  " . $d->{"gateway$suffix"} . "\n" if 
$d->{"gateway$suffix"};
-    $raw .= "\tbroadcast  " . $d->{"broadcast$suffix"} . "\n" if 
$d->{"broadcast$suffix"};
 
     my $done = { type => 1, priority => 1, method => 1, active => 1, exists => 
1,
                 comments => 1, autostart => 1, options => 1,
diff --git a/test/etc_network_interfaces/t.bridge-v4-v6.pl 
b/test/etc_network_interfaces/t.bridge-v4-v6.pl
index 7818126..8a80074 100644
--- a/test/etc_network_interfaces/t.bridge-v4-v6.pl
+++ b/test/etc_network_interfaces/t.bridge-v4-v6.pl
@@ -1,8 +1,6 @@
-my $ip = '10.0.0.2';
-my $nm = '255.255.255.0';
+my $ip = '10.0.0.2/24';
 my $gw = '10.0.0.1';
-my $ip6 = 'fc05::1:2';
-my $nm6 = '112';
+my $ip6 = 'fc05::1:2/112';
 my $gw6 = 'fc05::1:1';
 
 r(load('base'));
@@ -22,14 +20,12 @@ EOF
 update_iface('vmbr0',
     [ { family => 'inet',
        address => $ip,
-       netmask => $nm,
        gateway => $gw } ],
     autostart => 0);
 
 expect load('base') . <<"EOF";
 iface vmbr0 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
        bridge-ports eth0
        bridge-stp off
@@ -41,13 +37,11 @@ save('with-ipv4', w());
 update_iface('vmbr0',
     [ { family => 'inet6',
        address => $ip6,
-       netmask => $nm6,
        gateway => $gw6 } ]);
 
 expect load('with-ipv4') . <<"EOF";
 iface vmbr0 inet6 static
        address  $ip6
-       netmask  $nm6
        gateway  $gw6
 
 EOF
@@ -64,7 +58,6 @@ delete_iface('vmbr0', 'inet');
 expect load('base') . <<"EOF";
 iface vmbr0 inet6 static
        address  $ip6
-       netmask  $nm6
        gateway  $gw6
        bridge-ports eth0
        bridge-stp off
diff --git a/test/etc_network_interfaces/t.create_network.pl 
b/test/etc_network_interfaces/t.create_network.pl
index 4dca801..0ff6a29 100644
--- a/test/etc_network_interfaces/t.create_network.pl
+++ b/test/etc_network_interfaces/t.create_network.pl
@@ -13,8 +13,7 @@ r(load('brbase'));
 # Variables used for the various interfaces:
 #
 
-my $ip = '192.168.0.2';
-my $nm = '255.255.255.0';
+my $ip = '192.168.0.2/24';
 my $gw = '192.168.0.1';
 my $svcnodeip = '239.192.105.237';
 my $physdev = 'eth0';
@@ -28,8 +27,7 @@ my $remoteip2 = '192.168.0.4';
 my $vmbr0_part = <<"PART";
 auto vmbr0
 iface vmbr0 inet static
-       address  10.0.0.2
-       netmask  255.255.255.0
+       address  10.0.0.2/24
        gateway  10.0.0.1
        bridge-ports eth0
        bridge-stp off
@@ -46,7 +44,6 @@ $config->{ifaces}->{eth1} = {
     type => 'eth',
     method => 'static',
     address => $ip,
-    netmask => $nm,
     gateway => $gw,
     families => ['inet'],
     autostart => 1
@@ -56,7 +53,6 @@ my $eth1_part = <<"PART";
 auto eth1
 iface eth1 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
 PART
 chomp $eth1_part;
@@ -508,7 +504,6 @@ iface eth0 inet manual
 auto eth1
 iface eth1 inet6 static
        address  $ip
-       netmask  $nm
        gateway  $gw
 
 iface eth2 inet manual
@@ -521,8 +516,7 @@ iface eth5 inet manual
 
 auto vmbr0
 iface vmbr0 inet static
-       address  10.0.0.2
-       netmask  255.255.255.0
+       address  10.0.0.2/24
        gateway  10.0.0.1
        bridge-ports eth0
        bridge-stp off
diff --git a/test/etc_network_interfaces/t.list-interfaces.pl 
b/test/etc_network_interfaces/t.list-interfaces.pl
index 7e37afa..5925c35 100644
--- a/test/etc_network_interfaces/t.list-interfaces.pl
+++ b/test/etc_network_interfaces/t.list-interfaces.pl
@@ -16,13 +16,10 @@ eth100:
 /proc/net/dev
 
 my %wanted = (
-    vmbr0 => { address => '192.168.1.2',
-              netmask => '255.255.255.0',
+    vmbr0 => { address => '192.168.1.2/24',
               gateway => '192.168.1.1',
-              address6 => 'fc05::1:1',
-              netmask6 => '112' },
-    vmbr1 => { address => '10.0.0.5',
-              netmask => '255.255.255.0' }
+              address6 => 'fc05::1:1/112'},
+    vmbr1 => { address => '10.0.0.5/24'}
 );
 
 save('interfaces', <<"/etc/network/interfaces");
@@ -40,23 +37,23 @@ iface eth100 inet manual
 
 auto vmbr0
 iface vmbr0 inet static
-       address  $wanted{vmbr0}->{address}
-       netmask  $wanted{vmbr0}->{netmask}
+       address  192.168.1.2
+       netmask  24
        gateway  $wanted{vmbr0}->{gateway}
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
 
 iface vmbr0 inet6 static
-       address  $wanted{vmbr0}->{address6}
-       netmask  $wanted{vmbr0}->{netmask6}
+       address  fc05::1:1
+       netmask  112
 
 source-directory before-ovs.d
 
 allow-ovs vmbr1
 iface vmbr1 inet static
-       address  $wanted{vmbr1}->{address}
-       netmask  $wanted{vmbr1}->{netmask}
+       address  10.0.0.5
+       netmask  255.255.255.0
        ovs_type OVSBridge
        ovs_ports eth100
 
diff --git a/test/etc_network_interfaces/t.ovs_bridge_allow.pl 
b/test/etc_network_interfaces/t.ovs_bridge_allow.pl
index 45fad2e..159b7d4 100644
--- a/test/etc_network_interfaces/t.ovs_bridge_allow.pl
+++ b/test/etc_network_interfaces/t.ovs_bridge_allow.pl
@@ -1,7 +1,6 @@
 use strict;
 
-my $ip = '192.168.0.100';
-my $nm = '255.255.255.0';
+my $ip = '192.168.0.100/24';
 my $gw = '192.168.0.1';
 
 # replace proc_net_dev with one with a bunch of interfaces
@@ -17,7 +16,6 @@ r('');
 new_iface('vmbr0', 'OVSBridge',
     [ { family => 'inet',
         address => $ip,
-        netmask => $nm,
         gateway => $gw } ],
     autostart => 1);
 
@@ -42,7 +40,6 @@ iface eth3 inet manual
 allow-ovs vmbr0
 iface vmbr0 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
        ovs_type OVSBridge
 
@@ -70,7 +67,6 @@ iface eth3 inet manual
 allow-ovs vmbr0
 iface vmbr0 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
        ovs_type OVSBridge
        ovs_ports eth1 eth2
@@ -105,7 +101,6 @@ iface eth2 inet manual
 allow-ovs vmbr0
 iface vmbr0 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
        ovs_type OVSBridge
        ovs_ports eth1
diff --git a/test/etc_network_interfaces/t.parsed_options.pl 
b/test/etc_network_interfaces/t.parsed_options.pl
index 40b5b11..7a32302 100644
--- a/test/etc_network_interfaces/t.parsed_options.pl
+++ b/test/etc_network_interfaces/t.parsed_options.pl
@@ -18,8 +18,7 @@ iface eth1 inet manual
 
 auto vmbr0
 iface vmbr0 inet static
-       address  10.0.0.2
-       netmask  255.255.255.0
+       address  10.0.0.2/24
        gateway  10.0.0.1
        bridge-ports eth0
        bridge-stp off
diff --git a/test/etc_network_interfaces/t.unknown_order.pl 
b/test/etc_network_interfaces/t.unknown_order.pl
index 862e7b8..780c5ec 100644
--- a/test/etc_network_interfaces/t.unknown_order.pl
+++ b/test/etc_network_interfaces/t.unknown_order.pl
@@ -25,8 +25,7 @@ iface bond0 inet manual
 
 auto bond1
 iface bond1 inet static
-       address  10.10.10.$ip
-       netmask  255.255.255.0
+       address  10.10.10.$ip/24
        bond-slaves eth2 eth3
        bond-miimon 100
        bond-mode balance-alb
@@ -41,20 +40,16 @@ iface bond2 inet manual
 
 iface unknown3 inet static
        address  0.0.0.0
-       netmask  0.0.0.0
 
 iface unknown4 inet static
        address  0.0.0.0
-       netmask  0.0.0.0
 
 iface unknown5 inet static
        address  0.0.0.0
-       netmask  0.0.0.0
 
 auto vmbr0
 iface vmbr0 inet static
-       address  192.168.100.13
-       netmask  255.255.255.0
+       address  192.168.100.13/24
        gateway  192.168.100.1
        bridge-ports bond0
        bridge-stp off
@@ -62,9 +57,7 @@ iface vmbr0 inet static
 
 auto unknown6
 iface unknown6 inet static
-       address  10.10.11.13
-       netmask  255.255.255.0
-       network 10.10.11.0
+       address  10.10.11.13/24
        pre-up ifconfig bond0 up
 
 auto vmbr3
@@ -92,7 +85,7 @@ IFACES
 }
 
 r(wanted(13));
-update_iface('bond1', [ { family => 'inet', address => '10.10.10.11' } ]);
+update_iface('bond1', [ { family => 'inet', address => '10.10.10.11/24' } ]);
 expect wanted(11);
 
 1;
diff --git a/test/etc_network_interfaces/t.update_network.pl 
b/test/etc_network_interfaces/t.update_network.pl
index 4bf70cf..e205e4f 100644
--- a/test/etc_network_interfaces/t.update_network.pl
+++ b/test/etc_network_interfaces/t.update_network.pl
@@ -3,11 +3,9 @@ eth0:
 eth1:
 /proc/net/dev
 
-my $ip = '192.168.0.2';
-my $nm = '255.255.255.0';
+my $ip = '192.168.0.2/24';
 my $gw = '192.168.0.1';
-my $ip6 = 'fc05::2';
-my $nm6 = '112';
+my $ip6 = 'fc05::2/112';
 my $gw6 = 'fc05::1';
 
 # Load
@@ -18,7 +16,6 @@ $config->{ifaces}->{eth1} = {
     type => 'eth',
     method => 'static',
     address => $ip,
-    netmask => $nm,
     gateway => $gw,
     families => ['inet'],
     autostart => 1
@@ -33,13 +30,11 @@ iface eth0 inet manual
 auto eth1
 iface eth1 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
 
 auto vmbr0
 iface vmbr0 inet static
-       address  10.0.0.2
-       netmask  255.255.255.0
+       address  10.0.0.2/24
        gateway  10.0.0.1
        bridge-ports eth0
        bridge-stp off
@@ -69,18 +64,15 @@ iface eth0 inet manual
 auto eth1
 iface eth1 inet static
        address  $ip
-       netmask  $nm
        gateway  $gw
 
 iface eth1 inet6 static
        address  $ip6
-       netmask  $nm6
        gateway  $gw6
 
 auto vmbr0
 iface vmbr0 inet static
-       address  10.0.0.2
-       netmask  255.255.255.0
+       address  10.0.0.2/24
        gateway  10.0.0.1
        bridge-ports eth0
        bridge-stp off
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to