]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/INotify.pm
INotify: use auto for ovs interfaces with ifupdown2
[pve-common.git] / src / PVE / INotify.pm
index a4de45a7355ccb15bc04dc2554fbb28c63047caf..0136f326bb89d93c407f4ad55ed01992a347c609 100644 (file)
@@ -1113,21 +1113,22 @@ 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->{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->{address} = $d->{address} . "/" . $cidr;
+           if ($d->{netmask}) {
+               if ($d->{netmask} =~ m/^\d+$/) { # e.g. netmask 20
+                   $d->{address} = $d->{address} . "/" . $d->{netmask};
+               } elsif (my $mask = PVE::JSONSchema::get_netmask_bits($d->{netmask})) {
+                   $d->{address} = $d->{address} . "/" . $mask;
+               }
            }
-           #for api compatibility
-           $d->{cidr} = $d->{address} 
+          for api compatibility
+          $d->{cidr} = $d->{address};
        }
 
        # map address6 and netmask6 to cidr6
        if ($d->{address6}) {
            $d->{address6} .= "/" . $d->{netmask6} if $d->{address6} !~ m!^(.*)/(\d+)$! && $d->{netmask6};
-            #for api compatibility
-           $d->{cidr6} = $d->{address6} 
+           for api compatibility
+           $d->{cidr6} = $d->{address6};
        }
 
        $d->{method} = 'manual' if !$d->{method};
@@ -1310,7 +1311,12 @@ sub __interface_to_string {
        $done->{ovs_type} = 1;
 
        if (my $bridge = $d->{ovs_bridge}) {
-           $raw = "allow-$bridge $iface\n$raw";
+           if ($ifupdown2) {
+               $raw = "auto $iface\n$raw";
+           } else {
+               $raw = "allow-$bridge $iface\n$raw";
+           }
+
            $raw .= "\tovs_bridge $bridge\n";
            $done->{ovs_bridge} = 1;
        }
@@ -1652,7 +1658,7 @@ NETWORKDOC
 
        $printed->{$iface} = 1;
        if ($d->{autostart}) {
-           if ($d->{type} eq 'OVSBridge') {
+           if ($d->{type} eq 'OVSBridge' && !$ifupdown2) {
                # cannot use 'auto' for OVS, would add race with systemd ifup@.service
                $raw .= "allow-ovs $iface\n";
            } else {