]> git.proxmox.com Git - pve-common.git/blobdiff - data/PVE/Network.pm
add 'noerr' parameter to parse_tap_devive_name()
[pve-common.git] / data / PVE / Network.pm
index dffa764f552a7b527dcbec8e08dfd0629174d4f1..b141d090929047dbaa24f87573701fa76083c832 100644 (file)
@@ -66,7 +66,7 @@ my $read_bridge_mtu = sub {
 };
 
 my $parse_tap_devive_name = sub {
-    my ($iface) = @_;
+    my ($iface, $noerr) = @_;
 
     my ($vmid, $devid);
 
@@ -77,7 +77,8 @@ my $parse_tap_devive_name = sub {
        $vmid = $1;
        $devid = $2;
     } else {
-       die "wrong interface name $iface";
+       return undef if $noerr;
+       die "can't create firewall bridge for random interface name '$iface'\n";
     }
 
     return ($vmid, $devid);
@@ -87,9 +88,10 @@ my $compute_fwbr_names = sub {
     my ($vmid, $devid) = @_;
 
     my $fwbr = "fwbr${vmid}i${devid}";
-    my $vethfw = "link${vmid}i${devid}";
-    my $vethfwpeer = "link${vmid}p${devid}";
-    my $ovsintport = "link${vmid}o${devid}";
+    # Note: the firewall use 'fwln+' to filter traffic to VMs
+    my $vethfw = "fwln${vmid}i${devid}";
+    my $vethfwpeer = "fwpr${vmid}p${devid}";
+    my $ovsintport = "fwln${vmid}o${devid}";
 
     return ($fwbr, $vethfw, $vethfwpeer, $ovsintport);
 };
@@ -162,8 +164,8 @@ my $create_firewall_bridge_linux = sub {
     &$activate_interface($vethfw);
     &$activate_interface($vethfwpeer);
 
-    &$bridge_add_interface($bridge, $vethfw);
-    &$bridge_add_interface($fwbr, $vethfwpeer);
+    &$bridge_add_interface($fwbr, $vethfw);
+    &$bridge_add_interface($bridge, $vethfwpeer);
 
     return $fwbr;
 };
@@ -192,7 +194,8 @@ my $create_firewall_bridge_ovs = sub {
 my $cleanup_firewall_bridge = sub {
     my ($iface) = @_;
 
-    my ($vmid, $devid) = &$parse_tap_devive_name($iface);
+    my ($vmid, $devid) = &$parse_tap_devive_name($iface, 1);
+    return if !defined($vmid);  
     my ($fwbr, $vethfw, $vethfwpeer, $ovsintport) = &$compute_fwbr_names($vmid, $devid);
 
     # cleanup old port config from any openvswitch bridge